1. ホーム
  2. python

[解決済み] ジェネレータ式とリスト内包の比較

2022-03-22 22:44:15

質問

Pythonでジェネレータ式を使うべきときと、リスト内包を使うべきときとは?

# Generator expression
(x*2 for x in range(256))

# List comprehension
[x*2 for x in range(256)]

解決方法は?

ジョンの回答 は良い(何かを何度も反復したいときはリスト内包の方が良いということ)。 しかし、リストメソッドのどれかを使いたい場合はリストを使うべきだということも知っておく必要がある。 たとえば、次のようなコードはうまくいかない。

def gen():
    return (something for something in get_some_stuff())

print gen()[:2]     # generators don't support indexing or slicing
print [5,6] + gen() # generators can't be added to lists

基本的に、1回だけ反復するのであれば、ジェネレータ式を使う。 生成された結果を保存して使用したい場合は、リスト内包を使用したほうがよいでしょう。

もし、プログラムの動作が遅いと感じたら、そのときだけ、コードのチューニングに戻ることをお勧めします。