2.4. set型・リスト内包表記#
2.4.1. set型#
リストから重複を取り除くためにset型(重複を許さない)を使うことができます。
u = [0, 0, 0, 1, 1, 3, 4, 10, 10]
set(u)
{0, 1, 3, 4, 10}
list(set(u)) #セット型からリスト型に戻します
[0, 1, 3, 4, 10]
2.4.2. リスト内包表記 (List comprehension)#
forループを各代わりにリスト内包表記(list comprehension)を使うことができます。処理速度が速くなる場合が多いです。
forループで以下のようなコードを実行しましょう。
%%time
original = range(100000)
double = []
for i in original:
result = i * 2
double.append(result) #appendはリストに要素を追加します
print(len(double))
100000
CPU times: user 6.17 ms, sys: 400 µs, total: 6.57 ms
Wall time: 6.54 ms
Note
%%time
はJupyter Notebookのマジックコマンドと呼ばれるもののひとつです。cellの処理時間を計測することができます。
また、%time
とすると、その行の処理時間を計測できます。
%lsmagic
で使用できるマジックコマンドの一覧を確認できます。
詳細はIPythonのドキュメントをご確認ください。
上のcellを実行するのにかかった時間が表示されるはずです。
次に上のcellと同じ処理をリスト内包表記で書いてみましょう。
%%time
double = [i * 2 for i in original]
print(len(double))
100000
CPU times: user 2.24 ms, sys: 259 µs, total: 2.5 ms
Wall time: 2.5 ms
実行する環境によって異なりますが、場合によってはリスト内包表記の方が実行時間が短くなっているかもしれません。