こんにちは、今日はリスト内包表記をやっていきます。
タプルをリストに変換するコードという、簡単なケースを例としてやっていきましょう。
通常の書き方
|
#タプルを用意する t=(1,2,3,4,5,6,7,8,9) #空のリストを用意する(必須!!) li=[] #ループを回してタプルの要素をひとつずつアペンドしていく for i in t: li.append(i) print(li) #[1, 2, 3, 4, 5, 6, 7, 8, 9] |
リスト内包表記を使ったやり方
メリット:空リストが不要、アペンドも不要
|
#タプルを用意する t=(1,2,3,4,5,6,7,8,9) #空のリストは不要 li=[i for i in t ] print(li) #[1, 2, 3, 4, 5, 6, 7, 8, 9] |
さらにif文にも対応できる
#普通のやり方
|
#タプルを用意する t=(1,2,3,4,5,6,7,8,9) li=[] for i in t: #3の倍数のときだけ if i%3==0: li.append(i) print(li) #[3, 6, 9] |
#内包表記の場合
メリット:空リストが不要、アペンドも不要、if文のネストも不要
|
#タプルを用意する t=(1,2,3,4,5,6,7,8,9) li=[i for i in t if i%3==0] print(li) #[3, 6, 9] |
さらに i , j の2変数になり、for文がダブルになった場合
#通常の場合
|
#タプルを用意する t=(1,2,3,4,5,6,7,8,9) li=[] for i in t: for j in t: li.append(i*j) print(li) """ [1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81] """ |
#リスト内包表記の場合
メリット:たったの1行で書けてしまう。
ただし、2変数を超える場合は見難くなるので、通常のfor文を使ったほうが解りやすいかもしれない。
|
#タプルを用意する t=(1,2,3,4,5,6,7,8,9) li=[i*j for i in t for j in t] print(li) """ [1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81] """ |
さいごに
どうでしょうか、リスト内包表記。かなりパワフルな表現方法ではないでしょうか。
よく見かける書き方なのでぜひマスターしておきたいです。