Python3.8.5におけるリスト内包表記について。
※ はてなブログは空のブラケットを表示しない仕様なので半角スペースを入れています。
#①リストを作る
tuple = ('0', '1', '2', '3', '4') #タプルが入った変数tupleを作る
list = [ ] #空のリストが入った変数listを作る
for _ in tuple: #forループでtupleの値を1つずつ_に再代入してく
list.append(_) #_に値が代入される毎に_の値をlistに追加していく
print(list) #['0','1','2','3','4']
#②①をリスト内包表記にしたパターン
list2 = [_ for _ in tuple] #①のforループと同じ処理がされる
print(list2) #①と同じ結果
#③for文にif文が入ってるパターン
list3 = [ ]
for _ in tuple: #forループでtupleの値を1つずつ_に再代入してく
if int(_) % 2 == 0: #_の値を2で割って余りが0のときだけ下の処理を実行する
list3.append(_) #現在_に代入されている値をlistに追加していく
print(list3) #['0', '2', '4']
#④③をリスト内包表記にしたパターン
list4 = [_ for _ in tuple if int(_) % 2 == 0] #if文をつなげて書く
print(list4) #③と同じ結果
#⑤ちょっとややこしいパターン
tuple2 = (5, 6, 7, 8, 9)
list5 = [ ]
for _ in tuple: #tupleの値を1つ_に入れる(下のループが終了する毎に次の値へ)
for _1 in tuple2: #tuple2の値を1つ_1に入れる(上のループ1回につき毎回ループをぜんぶ回す)
list5.append(int(_) * _1) #現在の_の値と現在の_1の値を乗算して出力
print(list5) #計25個の値が入ったリストが出力
#⑥⑤をリスト内包表記にしたパターン
list6 = [int(_) * _1 for _ in tuple for _1 in tuple2] #最初のforの前の値がappend()の値になる
print(list6) #⑤と同じ結果
tuple = ('0', '1', '2', '3', '4') #タプルが入った変数tupleを作る
list = [ ] #空のリストが入った変数listを作る
for _ in tuple: #forループでtupleの値を1つずつ_に再代入してく
list.append(_) #_に値が代入される毎に_の値をlistに追加していく
print(list) #['0','1','2','3','4']
#②①をリスト内包表記にしたパターン
list2 = [_ for _ in tuple] #①のforループと同じ処理がされる
print(list2) #①と同じ結果
#③for文にif文が入ってるパターン
list3 = [ ]
for _ in tuple: #forループでtupleの値を1つずつ_に再代入してく
if int(_) % 2 == 0: #_の値を2で割って余りが0のときだけ下の処理を実行する
list3.append(_) #現在_に代入されている値をlistに追加していく
print(list3) #['0', '2', '4']
#④③をリスト内包表記にしたパターン
list4 = [_ for _ in tuple if int(_) % 2 == 0] #if文をつなげて書く
print(list4) #③と同じ結果
#⑤ちょっとややこしいパターン
tuple2 = (5, 6, 7, 8, 9)
list5 = [ ]
for _ in tuple: #tupleの値を1つ_に入れる(下のループが終了する毎に次の値へ)
for _1 in tuple2: #tuple2の値を1つ_1に入れる(上のループ1回につき毎回ループをぜんぶ回す)
list5.append(int(_) * _1) #現在の_の値と現在の_1の値を乗算して出力
print(list5) #計25個の値が入ったリストが出力
#⑥⑤をリスト内包表記にしたパターン
list6 = [int(_) * _1 for _ in tuple for _1 in tuple2] #最初のforの前の値がappend()の値になる
print(list6) #⑤と同じ結果
リスト内包表記とは、リストを作成する方法のひとつです。
①のようなプログラムをリスト内包表記で記述すると、②のようになります。
ややコードが読みづらくなりますが、③のパターンのようにインナー関数の処理も含めて記述することもできます。
また⑥のパターンを見てもらうとわかるように、リスト内表記の最初のforの前に記述している値はappend()の括弧内の値となっています。
ちなみにところどころで変数_内の値をint()で型キャストしているのは、変数tupleの値がすべてint型ではなくstr型になっているからです。
変数tuple2の値はint型になっているので、演算などの際に変数tupleの値のように型キャストをしてやる必要はありません。
以上です。