ジェネレータ式とリスト内包表記 質問する

ジェネレータ式とリスト内包表記 質問する

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 回だけ反復処理を実行する場合は、ジェネレータ式を使用します。生成された結果を保存して使用したい場合は、リストの内包表記を使用する方がよいでしょう。

どちらかを選択する最も一般的な理由はパフォーマンスであるため、気にせずにどちらかを選択することをお勧めします。プログラムの実行速度が遅すぎると感じた場合のみ、戻ってコードの調整を検討してください。

おすすめ記事