ネストされたリスト内包表記
すばらしい!ここまでで、リスト内包表記の基本的な構文をしっかり理解できました。次は、コードを書くスキルをさらに上げましょう。この演習では、リスト内包表記の中に別のリスト内包表記を書く、ネストされたリスト内包表記に挑戦します。少し難しそうに聞こえるかもしれませんが、できます!
文字列から少し離れて、別のテーマに取り組みましょう。リストの活用方法の一つとして、行列のような多次元オブジェクトの表現があります。Pythonでは、行列をリストのリストとして表すことができます。たとえば、各行に 0 から 4 の値を持つ 5×5 の行列は次のように書けます。
matrix = [[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]]
あなたのタスクは、ネストされたリスト内包表記を使ってこの行列を再現することです。行列の1行は、単一のリスト内包表記で作成できます。リストのリストを作るには、そのリスト内包表記を外側のリスト内包表記の出力式として指定するだけです。
[[出力式] for イテレータ変数 in イテラブル]
ここでは、出力式自体がリスト内包表記になっている点に注目してください。
この演習はコースの一部です
Python Toolbox
演習の手順
- 内側のリスト内包表記(ネストされたリスト内包表記の出力式)では、
0を使って4からrange()までの値のリストを作成してください。イテレータ変数にはcolを使います。 - ネストされたリスト内包表記のイテラブル部分では、
range()を使って5行分をカウントします。つまり、0から4までの値のリストを作成してください。イテレータ変数にはrowを使います。なお、この変数はリストのリストの値を生成するためには使用しません。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create a 5 x 5 matrix using a list of lists: matrix
matrix = [[____] ____]
# Print the matrix
for row in matrix:
print(row)