Python3-派生

Python3-派生

  • リストを作成する(また、分析形式としても知られている)式簡潔の導出方法、辞書、リストのセット、辞書、および他のセットのデータ構造を提供すること(イテレート可能オブジェクト)を反復してもよいです。
  • これは、括弧内の式を含む構造で、for文、ゼロ以上か、if文です。
  • 次順次実行実行シーケンス(のための - > IF /用 - > ...... IF /用)

まず、式の導出のリスト

1、だけforループ
l = [1, 2, 3, 4, 5]
ls = [x * 2 for x in l]
# 执行结果:[2, 4, 6, 8, 10]
# 执行顺序:
for x in l:
    x * 2
2であれば決意
ls = [x * 2 for x in l if x > 3]
# 执行结果:[8, 10]
# 执行顺序:
for x in l:
    if x > 3:
        x * 2
多くのための3、
ls = [x * y for x in l for y in range(5)]
# 执行结果:[0, 1, 2, 3, 4, 0, 2, 4, 6, 8, 0, 3, 6, 9, 12, 0, 4, 8, 12, 16, 0, 5, 10, 15, 20]
# 执行顺序:
for x in l:
    for y in range(5):
        x * y
4、もし判定とするための複数
ls = [x * y for x in l for y in range(5) if x > 3]
# 执行结果:[0, 4, 8, 12, 16, 0, 5, 10, 15, 20]
# 执行顺序:
for x in l:
    for y in range(5):
        if x > 3:
            x * y
図5に示すように、複数の場合は複数の
ls = [x * y for x in l for y in range(5) if x > 3 if y > 3]
# 执行结果:[16, 20]
# 执行顺序:
for x in l:
    for y in range(5):
        if x > 3:
            if y > 3:
                x * y

リストの内包表記にforループから進化

forループ:
ls = []
for n in range(1, 5):
    for m in range(1, n + 1):
        ls.append(n * m)
# [1, 2, 4, 3, 6, 9, 4, 8, 12, 16]
リスト内包:
ls = [n * m for n in range(1, 5) for m in range(1, n + 1)]
# [1, 2, 4, 3, 6, 9, 4, 8, 12, 16]

第二に、派生辞書

キーと値の交換の辞書に:

dict1 = {'s1': 'a ', 's2': 'b', 's3': 'c'}
changed = {value: key for key, value in dict1.items()}
print(changed)
# =======运行结果
# {'a ': 's1', 'b': 's2', 'c': 's3'}

第三に、派生のセット

連絡先リストは、[]、{}が設定されている別の導出式のリストであり、データセットは、重複を許可しません

# 集合推导式
s = {x**2 for x in [1, 1, 2]}
print(s) # {1, 4}
print(type(s)) # <class 'set'>

# 列表推导式
s1 = [x ** 2 for x in [1, 1, 2]]
print(s1) # [1, 1, 4]
print(type(s1)) # <class 'list'>

導出上に使用が簡単で、単に行圧縮のコードの複数のラインのための通常のサイクルの導出は、このような圧縮構文がリスト、辞書、および他の設定データ構造かもしれないが、反復(反復可能オブジェクト)を適用することを意味します。

[終了]


おすすめ

転載: www.cnblogs.com/desireyang/p/12160332.html