リスト内包表記は、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]
この例では、数値をフィルタリングして偶数のみを含め、その後二乗して、リスト内包表記での if 条件の使用を示します。
リスト内包表記には、従来のループに比べていくつかの利点があります。
リスト内包表記は、データを操作および処理するためにさまざまな方法で使用できます。
一般的な使用例をいくつか示します:
リストのフィルタリング:
words = ["apple", "banana", "cherry", "date"] short_words = [word for word in words if len(word) <= 5] print(short_words) # Output: ['apple', 'date']
この例では、単語のリストをフィルターして、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 コードを作成できます。
以上がPython のリスト内包表記を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。