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