リスト内表記
タプルの要素を、for loop で取り出してリストにしてみます。
最初に、タプル t の要素を一つ一つ取り出して、リストを作ります。
t = (1, 2, 3, 4, 5)
r = []
for i in t:
r.append(i)
print(r)
結果がリストとして出力されます。
[1, 2, 3, 4, 5]
同じことをリスト内表記でやってみる
これを、リスト内表記を利用して一行で書いてみます。
t = (1, 2, 3, 4, 5) r = [i for i in t] print(r)
同じ結果が得られます。
[1, 2, 3, 4, 5]
偶数のみ取り出す。
次に条件を追加してみます。偶数のみにします。
t = (1, 2, 3, 4, 5)
r = []
for i in t:
if i % 2 == 0:
r.append(i)
print(r)
結果は以下の様になりました。
[2, 4]
偶数のみ取り出すを、リスト内表記でやってみる
これもリスト内表記にしてみます。
r = [i for i in t if i % 2 == 0]
print(r)
結果は同じ様になります。
[2, 4]
リスト内表記が利用される理由
利用される理由としては
- 一行で済む
- メモリの使用量が少ない
- append処理がないので早い
などの理由で、短い for loop の場合によく利用されます。
for loop の入れ子
新たなタプル t2 を追加します。
t2 を t のループなかで、ループします。
さらに、append の際 i * j の積を計算します。
t = (1, 2, 3, 4, 5)
t2 = (5, 6, 7, 8, 9, 10)
r = []
for i in t:
for j in t2:
r.append(i * j)
print(r)
結果
[5, 6, 7, 8, 9, 10, 10, 12, 14, 16, 18, 20, 15, 18, 21, 24, 27, 30, 20, 24, 28, 32, 36, 40, 25, 30, 35, 40, 45, 50]
i と j の積の結果がリストで得られました。
for loop の入れ子を、リスト内表記でやってみる
同じことをリスト内表記でやってみます。
t = (1, 2, 3, 4, 5)
t2 = (5, 6, 7, 8, 9, 10)
r = [i * j for i in t for j in t2]
print(r)
同じ結果が得られました
[5, 6, 7, 8, 9, 10, 10, 12, 14, 16, 18, 20, 15, 18, 21, 24, 27, 30, 20, 24, 28, 32, 36, 40, 25, 30, 35, 40, 45, 50]
分かりにくいので、黄色と赤色と青色で見やすくしてみました。
リスト内表記は複雑にしすぎない
ここで示した、if 文で、偶数を選ぶ場合くらいならまだよいのですが、for loop を2つになると、コードの可読性が落ちてきます。
なので、これ以上の複雑化はお勧めできません。
コメント