リスト理解は、の最も驚くべき機能の 1 つです。 パイソン 。これは、反復可能なオブジェクトを反復してリストを作成するスマートかつ簡潔な方法です。ネストされたリスト内包表記は、ネストされた for ループとよく似た、別のリスト内包表記内のリスト内包表記に他なりません。
Python 構文のネストされたリストの内包表記
以下はネストされた構文です リストの内包表記 :
構文: new_list = [[リスト内の項目の式] リスト内の項目の]
パラメーター:
- 表現 : ステートメント内の各項目を変更するために使用される式
- アイテム: イテラブル内の要素
- リスト: 反復可能なオブジェクト
Python のネストされたリスト内包表記の例
以下に、ネストされたリストの内包表記の例をいくつか示します。
例 1: マトリックスの作成
この例では、どのようにできるかを比較します。 マトリックスを作成する で作成しているとき
リスト内包表記なし
この例では、ネストされたループ構造を使用して 5×5 の行列が作成されます。外側のループは 5 回反復され、空のサブリストをmatrix>
一方、内部ループは各サブリストに 0 から 4 の範囲の値を入力し、連続する整数値を含む行列が生成されます。
Python3
mylivecricket.in
matrix> => []> for> i> in> range> (> 5> ):> > # Append an empty sublist inside the list> > matrix.append([])> > for> j> in> range> (> 5> ):> > matrix[i].append(j)> print> (matrix)> |
>
>出力
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>
リスト内包表記の使用
ネストされたリストの内包表記を使用すると、同じ出力を 1 行で実現できます。この例では、ネストされたリスト内包表記を使用して 5×5 行列が生成されます。外側の内包表記は行を表すために 5 回反復され、内側の内包表記は各行に 0 から 4 の範囲の値を入力し、連続する整数値を含む行列が生成されます。
Python3
# Nested list comprehension> matrix> => [[j> for> j> in> range> (> 5> )]> for> i> in> range> (> 5> )]> print> (matrix)> |
>
>出力
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>
例 2: リスト内包表記を使用したネストされたリストのフィルタリング
ここでは、リスト内包表記を使用した場合と使用しない場合でリストをフィルタリングする方法を見ていきます。
リスト内包表記を使用しない場合
この例では、ネストされたループが 2D 行列を走査し、リスト内の Python リストから奇数を抽出し、それらをリストに追加します。odd_numbers>
。結果のリストには、行列の奇数要素がすべて含まれます。
Python3
matrix> => [[> 1> ,> 2> ,> 3> ], [> 4> ,> 5> ,> 6> ], [> 7> ,> 8> ,> 9> ]]> odd_numbers> => []> for> row> in> matrix:> > for> element> in> row:> > if> element> %> 2> !> => 0> :> > odd_numbers.append(element)> print> (odd_numbers)> |
JavaScript文字列のトリミング
>
>出力
[1, 3, 5, 7, 9]>
リスト内包表記の使用
この例では、リスト内包表記を使用してリストを簡潔に生成します。odd_numbers>
2D 行列の要素を反復処理することによって。結果のリストには奇数の要素のみが含まれ、同等のネストされたループ構造に代わる簡潔で読みやすい代替手段が提供されます。
Python3
matrix> => [[> 1> ,> 2> ,> 3> ], [> 4> ,> 5> ,> 6> ], [> 7> ,> 8> ,> 9> ]]> odd_numbers> => [> > element> for> row> in> matrix> for> element> in> row> if> element> %> 2> !> => 0> ]> print> (odd_numbers)> |
>
>出力
[1, 3, 5, 7, 9]>
例 3: ネストされたサブリストの平坦化
リスト内包表記なし
この例では、という名前の 2D リストmatrix>
サブリストの長さが異なる場合は、ネストされたループを使用して平坦化されます。各サブリストの要素がリストに順番に追加されます。flatten_matrix>
、元の行列が平坦化された表現になります。
Python3
# 2-D List> matrix> => [[> 1> ,> 2> ,> 3> ], [> 4> ,> 5> ], [> 6> ,> 7> ,> 8> ,> 9> ]]> flatten_matrix> => []> for> sublist> in> matrix:> > for> val> in> sublist:> > flatten_matrix.append(val)> print> (flatten_matrix)> |
>
>出力
[1, 2, 3, 4, 5, 6, 7, 8, 9]>
リスト内包表記あり
これも、以下に示すネストされたリスト内包表記を使用して行うことができます。この例では、次の名前の 2D リストがmatrix>
サブリストの長さが異なる場合は、ネストされたリストの内包表記を使用して平坦化されます。表現[val for sublist in matrix for val in sublist]>
サブリストの各要素を順番に含めることで、フラット化されたリストを簡潔に生成します。
Python3
# 2-D List> matrix> => [[> 1> ,> 2> ,> 3> ], [> 4> ,> 5> ], [> 6> ,> 7> ,> 8> ,> 9> ]]> # Nested List Comprehension to flatten a given 2-D matrix> flatten_matrix> => [val> for> sublist> in> matrix> for> val> in> sublist]> print> (flatten_matrix)> |
>
>出力
[1, 2, 3, 4, 5, 6, 7, 8, 9]>
例 4: リスト内包表記を使用した文字列の操作
リスト内包表記なし
この例では、という名前の 2D リストmatrix>
文字列を含む文字列はネストされたものを使用して変更されます ループ 。内側のループは各果物の最初の文字を大文字にし、外側のループは新しい 2D リストを構築します。modified_matrix>
、大文字の果物を使用すると、先頭が大文字の文字列の行列になります。
Python3
matrix> => [[> 'apple'> ,> 'banana'> ,> 'cherry'> ],> > [> 'date'> ,> 'fig'> ,> 'grape'> ],> > [> 'kiwi'> ,> 'lemon'> ,> 'mango'> ]]> modified_matrix> => []> for> row> in> matrix:> > modified_row> => []> > for> fruit> in> row:> > modified_row.append(fruit.capitalize())> > modified_matrix.append(modified_row)> print> (modified_matrix)> |
>
PVR 完全形式
>出力
[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>
リスト内包表記あり
この例では、次の名前の 2D リストがmatrix>
文字列を含む文字列は、ネストされたリスト内包表記を使用して変換されます。表現[[fruit.capitalize() for fruit in row] for row in matrix]>
各果物の最初の文字が大文字になるように変更された行列を効率的に生成し、その結果、最初の文字が大文字の文字列の新しい行列が生成されます。
Python3
matrix> => [[> 'apple'> ,> 'banana'> ,> 'cherry'> ],> > [> 'date'> ,> 'fig'> ,> 'grape'> ],> > [> 'kiwi'> ,> 'lemon'> ,> 'mango'> ]]> modified_matrix> => [[fruit.capitalize()> for> fruit> in> row]> for> row> in> matrix]> print> (modified_matrix)> |
>
>出力
[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>