ホームページ >バックエンド開発 >Python チュートリアル >Pythonの包括的なをリストします

Pythonの包括的なをリストします

Joseph Gordon-Levitt
Joseph Gordon-Levittオリジナル
2025-03-07 11:29:08486ブラウズ

List Comprehensions in Python

Pythonリスト理解は、コードを書く簡潔な方法を提供します。これにより、式の値を同時に計算して変数に割り当てることができます。セイウチのオペレーター(:=)を使用すると、コードを最適化できます。

square_cubes = [res if (res := n**2) % 9 == 0 or res % 4 == 0 else n**3 for n in range(1, 11)]
print(square_cubes)  # 输出: [1, 4, 9, 16, 125, 36, 343, 64, 81, 100]
ここでは、

変数を保存して計算結果を保存し、繰り返し計算を避けるために後続のコードに再利用します。 res ネストされたループのリストn**2リスト

リスト理解はネストされたループをサポートしており、ループの数に制限はありません。ただし、ループシーケンスは元のコードと一致する必要があることに注意する必要があります。また、各

サイクルの後にオプションの

条件を追加することもできます。ネストされたforループのリスト理解構造は次のとおりです。 for if次の例は、乗算テーブルを生成するためのネストされたループのリストの理解を示しています。 for

リストの理解:
[ <表达式> for <元素a> in <可迭代对象a> (可选 if <条件a>)
              for <元素b> in <可迭代对象b> (可选 if <条件b>)
              for <元素c> in <可迭代对象c> (可选 if <条件c>)
              ... ]
に変換します

リストの理解は、ネストされたリストを平らにするためにも使用できます。
multiplications = []
for i in range(1, 4):
    for n in range(1, 11):
        multiplications.append(i*n)
print(multiplications) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

ネストされたリスト理解

multiplications = [i*n for i in range(1,4) for n in range(1,11)]
print(multiplications) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
ネストされたリストの理解は、ネストされたループのリスト理解とは異なります。前者は推定された内部ネストされた導出であり、後者はループ内部ネストループです。たとえば、Matrix Transpose:

通常のループを使用してください:
matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
]
flatten = [n for row in matrix for n in row]
print(flatten) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

ネストされたリスト理解:

を使用します

set and Dictionary Derivation

matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
]
transpose = []
for i in range(4):
    temp = []
    for row in matrix:
        temp.append(row[i])
    transpose.append(temp)
print(transpose) # 输出: [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
リスト理解の概念は、設定および辞書の包含にも適用されます。辞書は、キー値のペアを保存するために使用されます:

matrix = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
]
transpose = [[row[n] for row in matrix] for n in range(4)]
print(transpose) # 输出: [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
セット派生は、順序付けられていないセットを作成するために使用されます:

要約

この記事では、ネストされたループ、ネストされた導出、コレクションおよび辞書派生派の派生物を含む、Pythonリストの概念とコード最適化のアプリケーションを紹介します。 複雑なネストされたループの場合、コードの読みやすさを向上させるために、リストの理解は複数の行に分割できることに注意してください。 コードの効率と読みやすさを考慮して、実際の状況に応じて適切な方法を選択することをお勧めします。
squares_cubes = {n: n**2 if n%2 == 0 else n**3 for n in range(1,11)}
print(squares_cubes) # 输出: {1: 1, 2: 4, 3: 27, 4: 16, 5: 125, 6: 36, 7: 343, 8: 64, 9: 729, 10: 100}

以上がPythonの包括的なをリストしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。