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
この通りですね。ご指摘ありがとうございます。