Python の内包表記: リスト、辞書、集合の内包表記

よりクリーンで高速な Python を作成します。実際の例、フィルタリング条件、ネストされたループを使用して、リスト、辞書、集合の内包表記をマスターします。

エディターで試してみる

概要

内包表記は Python で最も人気のある機能の 1 つで、既存の反復可能オブジェクトから新しいコレクション (リスト、辞書、セット) を作成するための簡潔で可読性の高い構文を提供します。複数行の「for」ループを記述して項目を手動で追加するのではなく、内包表記を使用すると、表現力豊かな 1 行のコードで同じ変換、フィルタリング、代入を実行できます。

リスト内包表記は最も一般的なバリアントで、「[反復可能な if 条件の項目の式]」として構造化されています。内部的には、Python は C に近い速度で実行されるように内包表記を最適化しており、ループは基礎となるインタプリタによって処理されるため、多くの場合、同等の手動の `for` ループよりも優れたパフォーマンスを発揮します。これらは、摂氏温度のリストを華氏に変換したり、ユーザー レコードのリストから特定のキーを抽出したりするなど、素早い変換に最適です。

リスト以外にも、Python は Dictionary と Set 内包表記をサポートしています。中括弧とキーと値のペア (例: `{key: value for x in iterable}`) で定義された辞書内包表記は、マッピング ペアの反転やメタデータの解析に非常に役立ちます。集合内包表記は、重複を自動的に削除することにより、一意のコレクションを生成します。内包表記は非常に強力ですが、開発者は内包表記を過度に複雑化しないようにする必要があります。理解にネストされたループや複雑な条件が必要な場合、通常は従来の `for` ループの方が読みやすく保守しやすいです。

コードと実行の出力

リスト変換、条件付きフィルタリング、およびマッピング入力からの辞書の作成を示します。

numbers = [1, 2, 3, 4, 5, 6]

# List comprehension with filter (even squares)
even_squares = [x**2 for x in numbers if x % 2 == 0]

# Set comprehension (unique word lengths)
words = ["python", "java", "ruby", "python"]
word_lengths = {len(w) for w in words}

# Dictionary comprehension (number: square)
square_map = {n: n**2 for n in numbers[:4]}

print(f"Even squares: {even_squares}")
print(f"Unique lengths: {word_lengths}")
print(f"Square mapping: {square_map}")
端子出力
Even squares: [4, 16, 36]
Unique lengths: {4, 6}
Square mapping: {1: 1, 2: 4, 3: 9, 4: 16}

段階的な実装

  • 空の値または無効なデータをログから除外する
  • API ペイロードをキーと値のデータ マッピングにマッピングする
  • データベース行を簡単なリストにすばやくフォーマットする

よくある質問

理解は通常のループよりも高速ですか?

はい、Python インタープリター内の最適化された C コードによって反復が処理されるため、ほとんどの場合、処理が高速になります。

常に内包表記を使用する必要がありますか?

いいえ、Python ではコードの読みやすさが優先されます。内包表記にネストされたロジックがある場合、または 1 行または 2 行より長い場合は、従来のループが推奨されます。

関連トピック

推奨される Python リソース

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