Python ではジェネレータ式とリスト内包表記はいつ使用すればよいのでしょうか?
# Generator expression
(x*2 for x in range(256))
# List comprehension
[x*2 for x in range(256)]
ベストアンサー1
ジョンの答えは良いことです (リスト内包表記は、何かを複数回反復処理したい場合に適しています)。ただし、リスト メソッドのいずれかを使用する場合は、リストを使用する必要があることにも注意してください。たとえば、次のコードは機能しません。
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 回だけ反復処理を実行する場合は、ジェネレータ式を使用します。生成された結果を保存して使用したい場合は、リストの内包表記を使用する方がよいでしょう。
どちらかを選択する最も一般的な理由はパフォーマンスであるため、気にせずにどちらかを選択することをお勧めします。プログラムの実行速度が遅すぎると感じた場合のみ、戻ってコードの調整を検討してください。