Tips

今日の開発Tips(2025-08-03)

本Tipsでは、Pythonにおけるリスト内包表記とジェネレータ式を比較し、メモリ効率の良いコード記述方法を紹介します。リスト内包表記はリストを直接生成しますが、ジェネレータ式はイテレータを生成するため、大規模データ処理においてメモリ消費を抑えることができます。特にメモリ制限のある環境や巨大なデータセットを扱う際には、ジェネレータ式が有効です。

Pythonにおけるリスト内包表記とジェネレータ式の比較

リスト内包表記は、リストを簡潔に生成する便利な構文です。一方、ジェネレータ式はイテレータを生成し、必要な要素をオンデマンドで生成します。大規模データ処理では、ジェネレータ式の方がメモリ効率に優れています。

# リスト内包表記
numbers = [i**2 for i in range(1000000)]  # メモリを大量に消費

# ジェネレータ式
numbers_gen = (i**2 for i in range(1000000))  # メモリ消費が少ない

# ジェネレータ式からの要素取得 (必要に応じて)
for number in numbers_gen:
    # 処理
    pass

注意点:ジェネレータ式はイテレータを返すため、一度しか反復処理できません。複数回利用する場合はリストに変換するか、再度ジェネレータ式を生成する必要があります。 リスト内包表記は一度生成されたリストを保持するため、メモリ使用量は大きくなりますが、繰り返しアクセス可能です。どちらを使うかはデータサイズとアクセス方法によって使い分けましょう。