1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

filter vs 内包表記

Last updated at Posted at 2020-05-01

filterと内包表記どっちが速いの?

内包表記で条件つけた場合と filterlambda で条件渡した場合、どっちが速いの?

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

1
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?