lsitプロダクション(リストプロダクション)
1. リストの作成方法
前回の研究により、リストの作成方法は誰もが知っていますが、場合によっては、リストを作成するのが面倒な場合があります。代入の形式、特に規則的なリストなので、いちいち書いて値を代入するのは面倒すぎます。たとえば、30 個の要素を含むリストを生成するとします。その中の要素は 1 ~ 30 です。このように書くことができます:
# -*- coding: UTF-8 -*- list1=list ( range (1,31) ) print(list1)
出力結果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
これは実際に前にも述べました: たとえば、九九を印刷する例がありますが、この方法は数文だけで済みます。コードだけで十分ですので、詳しくは前章「条件文・ループ文の総合例」を参照してください。
ただし、リスト生成式を使えば、1行で九九を生成できます。コード。具体的にコードを見てみましょう:
print('\n'.join([' '.join ('%dx%d=%2d' % (x,y,x*y) for x in range(1,y+1)) for y in range(1,10)]))
最終出力結果:
1x1= 1 1x2= 2 2x2= 4 1x3= 3 2x3= 6 3x3= 9 1x4= 4 2x4= 8 3x4=12 4x4=16 1x5= 5 2x5=10 3x5=15 4x5=20 5x5=25 1x6= 6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7= 7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8= 8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9= 9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
ただし、ここではまずリスト生成
2 の作成方法を理解する必要があります。リスト生成の作成
まず、lsit 生成の構文は次のとおりです:
[expr for iter_var in iterable] [expr for iter_var in iterable if cond_expr]
最初の構文: 最初にすべての内容を iterable で反復し、各反復で対応する内容を配置します。 in iterable を iter_var に格納し、式に iter_var の内容を適用し、最後に式の計算値を使用してリストを生成します。
2 番目の構文: 判定ステートメントを追加し、条件を満たす内容のみを iterable に入れ、対応する内容を iter_var に配置し、iter_var の内容を式に適用します。最後に、式の計算値が使用されてリストが生成されます。
実は、これはリストの生成であるため、[]で囲み、その中のステートメントで生成する要素を先頭に置き、その後にfor ループ文または for ループ. 文と判定文。
例:
# -*- coding: UTF-8 -*- lsit1=[x * x for x in range(1, 11)] print(lsit1)
出力結果:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
ご覧のとおり、生成する要素 x * x を先頭に置き、その後に for ループを配置するだけです。リストを作成します。では、for ループの後の if の形式はどうなるでしょうか?理解方法:
# -*- coding: UTF-8 -*- lsit1= [x * x for x in range(1, 11) if x % 2 == 0] print(lsit1)
出力結果:
[4, 16, 36, 64, 100]
この例は、1 から 10 までの偶数の平方根を求めることです。前述したように、x * x は計算する要素です。後半部分は実際には for ループ内にネストされた if 判定文です。
したがって、この知識があれば、for ループ内にネストされた for ループも存在すると推測できます。具体例:
# -*- coding: UTF-8 -*- lsit1= [(x+1,y+1) for x in range(3) for y in range(5)] print(lsit1)
出力結果:
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5)]
実は、リスト生成式の組み合わせを知っていれば、このことを理解することは難しくありません。なぜなら、リストの生成では、以前に学習した知識ポイントを組み合わせて、より簡潔な記述方法に置き換えるだけだからです。