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)]

実は、リスト生成式の組み合わせを知っていれば、このことを理解することは難しくありません。なぜなら、リストの生成では、以前に学習した知識ポイントを組み合わせて、より簡潔な記述方法に置き換えるだけだからです。

学び続ける
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜