Python のリスト内包表記は、リストを迅速に生成できる便利で高速な構文です。その文法形式は数学の集合導出に似ており、意味論も似ているため、理解しやすく、使いやすくなっています。 Python のリスト内包表記については、以下で詳しく紹介します。
1. 基本的な文法構造
リスト内包表記の基本的な文法構造は次のとおりです:
[反復可能な if 条件の項目の式]
where, 式変数や関数呼び出しなどの操作を含む、リスト生成に関係する式を表します。item は、生成されたリスト内の要素を表します。iterable は、リスト、タプル、セットなどの反復可能なオブジェクトを表します。condition が条件のフィルタリングを表す場合、省略できるもの。
2. 一般的な使用シナリオ
1. 整数のリストを生成する
たとえば、1 から 10 までの整数のリストを生成するには、次のコードを使用できます。 :
num_list = [i for i in range(1,11)] print(num_list)
出力結果は次のとおりです:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ここでは range() 関数を使用して 1 ~ 10 の整数反復子を生成し、リスト内包表記によって要素が 1 つずつ抽出されます。そしてリスト化しました。
2. 正方リストの生成
たとえば、1 から 10 までの整数の正方リストを生成するには、次のコードを使用できます:
square_list = [i**2 for i in range(1,11)] print(square_list)
出力結果は:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
3. リスト要素のフィルタリング
たとえば、文字列リストから 3 より長い文字列をフィルタリングして除外するには、次のコードを使用できます:
str_list = ['hello', 'world', 'python', 'list', 'comprehension', 'study'] new_list = [s for s in str_list if len(s) > 3] print(new_list)
The出力結果は次のとおりです:
['hello', 'world', 'python', 'comprehension', 'study']
ここでは if ステートメントを使用して要素を条件付きでフィルターします。新しいリストには、長さが 3 より大きい文字列のみを入力できます。
4. 複数のループ
たとえば、1 から 9 までのすべての積を生成するには、次のコードを使用できます:
mul_list = [i*j for i in range(1,4) for j in range(1,4)] print(mul_list)
出力結果は次のとおりです:
[1, 2, 3, 2, 4, 6, 3, 6, 9]
ここでは、乗算演算は 2 レベルのループを通じて実装されています。つまり、i と j がそれぞれ 1、2、3 の場合、それらの積がリスト内の要素を構成します。
3. ネストされたリスト内包表記
リストを生成するときに、要素に対してより複雑な操作を実行する必要がある場合がありますが、この場合は、ネストされたリスト内包表記を使用できます。ネストされたリスト内包表記は、リスト内包表記に基づいて再度ネストされたリスト内包表記であり、その構文構造は次のとおりです:
[expression for item in iterable ifcondition for sub_item in sub_iterable if sub_condition ]
このうち、expression、item、iterable、condition の意味は上記の基本構文構造と一致しており、sub_item は項目の走査に基づいて再度走査される要素を表し、sub_iterable は sub_item の反復オブジェクトを表し、sub_condition は sub_item のフィルタリング条件を表します。
次に、ネストされたリストの内包表記の一般的な例をいくつか示します。
1. 正方行列の生成
たとえば、3×3 正方行列を生成するには、次のコードを使用できます:
matrix = [[i*j for j in range(1,4)] for i in range(1,4)] for row in matrix: print(row)
出力結果は次のとおりです:
[1, 2, 3] [2, 4, 6] [3, 6, 9]
This ここでは 2 つのレベルのネストされた導出が使用されています。外側の導出では 3 つのリストが生成され、内側の導出では各リストに 3 つの要素が生成されるため、3×3 の正方行列が形成されます。
2. 奇数と偶数をフィルタリングする
たとえば、整数のリストから奇数と偶数をフィルタリングしてそれぞれ 2 つのリストを形成するには、次のコードを使用します。 #
num_list = [1,2,3,4,5,6,7,8,9,10] odd_list = [i for i in num_list if i%2 == 1] even_list = [i for i in num_list if i%2 == 0] print(odd_list) print(even_list)
[1, 3, 5, 7, 9] [2, 4, 6, 8, 10]
以上がPythonのリスト内包表記の詳しい解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。