リスト内包表記で多次元リストを作る方法【Python勉強中】


このエントリーをはてなブックマークに追加

ここからちょっと広告です。

広告は以上です。

あちこち調べてもドンピシャなものがなかなか見つからなかったし、自分自身、明後日には忘れていそうなので、急いで書き留めます。

●リスト内包表記とは?
リストを作るときに、いちいち値を書くんじゃなくて、式でおおむね自動的に値を入れていく方法。
こういう風に書く。

[式 for カウンタ変数 in リストとかrange()とか]

for文の前に式を書く、そうすると、for文で指定した回数だけリストの中に値が入っていく感じです。

例:
print([i*2 for i in range(5)])
[0, 2, 4, 6, 8]
スクリーンショット 2020-09-07 23.45.08


●多次元リストとは?
二重、三重になったリストのこと。

例:
二重:[[1,2,3],[4,5,6],[7,8,9]]
三重:[[[1,2,3],
[4,5,6]],
[[7,8,9],
[10,11,12]],
[[13,14,15],
[16,17,18]]]

●リスト内包表記で多次元リストを作る方法
リスト内包表記で書く「式」のところを、入れ子にしていく。
二次元だとわかりやすい。「式」のところに[]で囲ったリスト内包表記を書いちゃう感じ。

例:
print([['a' for i in range(3)] for i in range(4)])
[['a', 'a', 'a'], ['a', 'a', 'a'], ['a', 'a', 'a'], ['a', 'a', 'a']]
スクリーンショット 2020-09-07 23.57.53

三次元以上も基本は同じ。

例:[[['a' for k in range(5)] for i in range(4)] for j in range(3)]
スクリーンショット 2020-09-08 0.00.55


●これを書こうと思った背景
非常に初歩的なことだと思うのですが、僕が自分で結構これで悩んだので、もしかすると将来同じことで悩む人もいるかもしれないと思い、一応したためておきます。
もちろん、いつものnote.nkmk.me大先生のところにも、リスト内包表記についてあますとこなく書かれておりますので、そちらの方が参考になります。

Ads by Google

コメント

コメントは、Twitterやはてブに、以下のボタンから本記事のアドレスつきでツイート/ブクマしていただくと、上にあるzenbackのウィジェットに反映されます。
  このエントリーをはてなブックマークに追加
または同ウィジェット内のFacebookコメントでお願いしますー。

Facebookのシェアは……されても誰だかわからないのですが、シェア自体は嬉しいので、下にボタンを置かせていただきます。よろしくお願いします。