リスト内包について
Pythonにはfor文を使って繰り返し処理を行う機能がある。
リスト内包を使うと、そのfor文を1行で簡潔に記述することができる。
リスト内包
例1:1から10までの数字をリストにして表示
1 2 3 |
ans = [i for i in range(1,11)] print(ans) #[1,2,3,4,5,6,7,8,9,10] |
上記のコードは以下と同じ動作になる。
1 2 3 4 |
ans = [] for i in range(1, 11): ans.append(i) print(ans) |
ans = [i for i in range(1,11)]
i:リストの要素としたい部分を指定
for以降:for文で処理を記述
例2:1~10の各数字を10倍してリストで表示
1 2 |
ans = [i*10 for i in range(1,11)] print(ans) |
ans = [i*10 for i in range(1,11)]
i*10:リストの要素としたい部分で計算などもできる
リスト内包(二重)
for文を二重ループで書くことがあるが、リスト内包でも実現できる
例1:1~3を、2つの数字の組合せとしてリストで表示
1 2 3 |
ans = [[i,j] for i in range(1,4) for j in range(1,4)] print(ans) #[[1, 1], [1, 2], [1, 3], [2, 1], [2, 2], [2, 3], [3, 1], [3, 2], [3, 3]] |
これは、以下のコードと同じ
1 2 3 4 5 |
ans = [] for i in range(1,4): for j in range(1,4): ans.append([i,j]) print(ans) |
ans = [[i,j] for i in range(1,4) for j in range(1,4)]
[i,j]:組み合わせの1つとしている
for i in range(1,4):外側のループ
for j in range(1,4):内側のループ
まとめ
リスト内包のメリット
・簡潔に書ける
・リスト内包で記述する方が処理が早くなることがあり、
競技プログラミング等でスコアが伸びる可能性がある。
コメント