巢狀列表生成式
太好了!到目前為止,你已經相當熟悉列表生成式的基本語法了。接下來我們把寫程式的功力再往前推一步。這個練習要你在一個列表生成式「裡面」再寫一個列表生成式,也就是巢狀列表生成式。聽起來有點複雜,但你一定辦得到!
我們先暫時離開字串。列表的一個常見用途,是用來表示多維物件,例如矩陣。在 Python 中,矩陣可以用列表的列表來表示。例如,每一列包含 0 到 4 的 5 x 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]]
你的任務是用巢狀列表生成式重建這個矩陣。回想一下,你可以用單一列表生成式建立矩陣的一列。若要建立列表的列表,只要把該列表生成式當作整體列表生成式的輸出運算式即可:
[[output expression] for iterator variable in iterable]
請注意,這裡的輸出運算式本身就是一個列表生成式。
本練習屬於課程
Python 工具箱
練習說明
- 在內層列表生成式(也就是巢狀列表生成式的輸出運算式)中,使用
range()產生從0到4的數值列表。將迭代變數命名為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)