リスト内包表記は、Python でリストを作成するための強力かつ効率的な方法です。
既存の反復可能オブジェクトに基づいてリストを生成する、簡潔で読みやすい方法を提供します。
この記事では、リスト内包表記の微妙な違い、従来のループに対する利点、およびさまざまな実用的なアプリケーションについて探ります。
リスト内包表記は、ループと条件付きロジックを 1 行のコードに結合することにより、構文的にコンパクトなリストを作成する方法です。
これにより、より読みやすく表現力豊かな方法でリストを生成できるようになり、コードの意図を一目で理解しやすくなります。
リスト内包表記の基本構造は次のとおりです:
[expression for item in iterable if condition]
この構造のコンポーネントを分解してみましょう:
基本リスト内包表記:
numbers = [1, 2, 3, 4, 5] squares = [x**2 for x in numbers] print(squares) # Output: [1, 4, 9, 16, 25]
この例では、リスト内包表記を使用して、既存の数値リストから新しい正方形のリストを作成します。
条件付きリスト内包表記:
numbers = [1, 2, 3, 4, 5] even_squares = [x**2 for x in numbers if x % 2 == 0] print(even_squares) # Output: [4, 16]
この例では、偶数のみを含むように数値をフィルター処理し、その後 2 乗して、リスト内包表記での if 条件の使用を示します。
リスト内包表記には、従来のループに比べていくつかの利点があります:
リスト内包表記は、データを操作および処理するためにさまざまな方法で使用できます。
一般的な使用例をいくつか示します:
リストのフィルタリング:
words = ["apple", "banana", "cherry", "date"] short_words = [word for word in words if len(word)この例では、単語のリストをフィルターして、5 文字以下の単語のみを含めます。
リストの変換:
temperatures_celsius = [0, 20, 30, 40] temperatures_fahrenheit = [(temp * 9/5) 32 for temp in temperatures_celsius] print(temperatures_fahrenheit) # Output: [32.0, 68.0, 86.0, 104.0]この例では、温度のリストを摂氏から華氏に変換します。
ネストされたリスト内包表記:
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flattened = [num for row in matrix for num in row] print(flattened) # Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]この例では、ネストされたリスト内包表記を使用して、2D リスト (行列) を 1D リストに平坦化します。
タプルのリストの作成:
pairs = [(x, y) for x in range(3) for y in range(3)] print(pairs) # Output: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]この例では、2 つの範囲の数値のすべての可能なペア (タプル) のリストを生成します。
重複を削除しています:
list_with_duplicates = [1, 2, 2, 3, 4, 4, 5] unique_list = list(set([x for x in list_with_duplicates])) print(unique_list) # Output: [1, 2, 3, 4, 5]この例では、リストをセットに変換し、リストに戻すことで、リストから重複を削除します。
より高度なトピック
次に、リスト内包表記のバリエーションに関するさらに高度なトピックをいくつか見てみましょう。
ジェネレータ式
ジェネレーター式はリスト内包表記に似ていますが、リストの代わりに反復可能オブジェクトを生成します。項目は一度にメモリに保存されるのではなく、その場で生成されるため、大規模なデータセットを操作する場合、メモリ効率が向上します。
numbers = [1, 2, 3, 4, 5] squares_generator = (x**2 for x in numbers) for square in squares_generator: print(square) # Output # 1 # 4 # 9 # 16 # 25辞書と集合内包表記
Python は辞書とセットの内包表記もサポートしているため、リスト内包表記と同様に、簡潔な方法で辞書とセットを作成できます。
# Dictionary comprehension numbers = [1, 2, 3, 4, 5] squares_dict = {x: x**2 for x in numbers} print(squares_dict) # Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} # Set comprehension list_with_duplicates = [1, 2, 2, 3, 4, 4, 5] unique_set = {x for x in list_with_duplicates} print(unique_set) # Output: {1, 2, 3, 4, 5}
結論
リスト内包表記は、簡潔で読みやすい方法でリストを作成できる Python の強力で多用途なツールです。
コードを簡素化し、パフォーマンスを向上させ、データの操作と処理を容易にします。
リスト内包表記とその高度な機能をマスターすることで、より効率的でクリーンな Python コードを作成できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3