Python Comprehions チートシート

Python で簡潔で読みやすいリスト、辞書、セット、ジェネレーターの内包表記を作成します。

リスト内包表記と集合内包表記

構文シュガー ループを使用して、シーケンスとセットをインラインで作成します。

メソッド・機能構文説明
List Comprehension[x * 2 for x in my_list]反復可能要素に式を適用して、新しいリストを構築します。
Conditional List[x for x in my_list if x > 0]フィルター述語を適用し、条件を満たす要素のみを保持します。
Nested Loops[x + y for x in list1 for y in list2]ネストされた操作を平坦化します。外側のループの反復ごとに内側のループを実行します。
Set Comprehension{x for x in my_list}セットを生成し、重複排除を自動的に適用します。

辞書とジェネレーターの内包表記

マッピングと遅延評価ストリームをインラインで生成します。

メソッド・機能構文説明
Dict Comprehension{k: v for k, v in pairs}インラインで辞書を構築します。
Conditional Dict{k: v for k, v in pairs if k is not None}不要な値を無視して辞書を構築します。
Generator Expression(x ** 2 for x in range(10))遅延ジェネレーター反復子オブジェクトを返します。メモリを節約するために項目を一度に 1 つずつ評価します。

インタラクティブなデモスクリプト

run_all_cheat_methods.py
エディターで実行
# List Comprehension
[x * 2 for x in my_list]

# Conditional List
[x for x in my_list if x > 0]

# Nested Loops
[x + y for x in list1 for y in list2]

# Set Comprehension
{x for x in my_list}

# Dict Comprehension
{k: v for k, v in pairs}

# Conditional Dict
{k: v for k, v in pairs if k is not None}

# Generator Expression
(x ** 2 for x in range(10))

よくある質問

リスト内包表記の使用を避けるべきなのはどのような場合ですか?

リスト内包表記が過度に複雑である場合、または複数のネストされたループがある場合は、コードの可読性が低下するため、リスト内包表記を避けてください。

リスト内包表記とジェネレーター式の違いは何ですか?

リスト内包表記は即座に評価してメモリ内にリストを構築しますが、ジェネレーター式はオンデマンドで項目を遅延生成するため、メモリを節約できます。

関連トピック

推奨される Python リソース

関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。