見出し画像

Pythonの入れ子のリスト内包を、ほぼサンプルプログラムの変化だけで示してみる。。。

まずリスト内包の基礎がまだの人は、先に下記の記事を読んでください。

https://note.com/0_humpty_dumpty/n/n3544cba4059c


では、リスト内包の基礎が分かってるものとして、ほぼサンプルプログラムの変化だけで、入れ子のリスト内包の基礎を示して行きます。

まず、下記の入れ子のリスト

[[0], [0, 1], [0, 1, 2]]

を作成する通常のサンプルプログラムを示します。

l = []

for y in range(3):
    t = []

    for x in range(y + 1):
        t.append(x)

    l.append(t)

print(l)


次に、内側の子ループだけをリスト内包に変えたサンプルプログラムを示します。このリスト内包に変えた部分が、入れ子のリスト内包の for 句より左の括弧の中の式になります。

l = []

for y in range(3):
    l.append([x for x in range(y + 1)])

print(l)


次に、外側の親ループもリスト内包に変えたサンプルプログラムを示します。これで入れ子のリスト内包が完成です。

l = []

l = [[x for x in range(y + 1)] for y in range(3)]

print(l)


まとめ
入れ子のリスト内包の肝は、親ループと子ループの位置関係だと思います。子ループが、入れ子のリスト内包の for 句より左の括弧の中の式になる事を理解する事が始めの一歩です。


おまけ全てを一行にまとめたサンプルプログラムを示しておきます。

print([[x for x in range(y + 1)] for y in range(3)])



#Python
#Python3
#リスト内包
#リスト内包表記
#入れ子のリスト内包
#入れ子のリスト内包表記