filter
と内包表記どっちが速いの?
内包表記で条件つけた場合と filter
に lambda
で条件渡した場合、どっちが速いの?
iter = 10000
# 内包表記
for _ in tqdm(range(iter)):
[i for i in range(iter) if i % 2 == 0]
# filterのみ
for _ in tqdm(range(iter)):
filter(lambda i: i % 2 == 0, range(iter))
# filterからのlistにキャスト
for _ in tqdm(range(iter)):
list(filter(lambda i: i % 2 == 0, range(iter)))
それぞれ比べてみました。
条件 | iter/s |
---|---|
内包表記 | 1531.51 |
filter のみ |
1169176.56 |
filter からのlist にキャスト |
880.30 |
filter
が圧勝でした。
しかし、その後の処理で list
にしなければならない場合は内包表記に軍配が上がるようです。
と、上記のように比較して filter
が圧勝するのも当たり前
https://qiita.com/licht-e-jima/items/0ef1e630c9afb771c040#comment-0882f662a1eb61d3e602
この通りですね。ご指摘ありがとうございます。