機
器
人
Python中的多維列表
我們已經對 Python 中的列表有了一些初步的瞭解,接下來,我們將更加深入地探討 Python 中的列表使用。經常,我們必須處理很複雜的資料結構,這些資料一個個地被儲存在列表中,因此,要怎麼有效地將列表的結構複雜化,成了一個很重要的課題。
列表中的列表
還記得嗎?我們之前曾經提到,列表中可以儲存幾乎所有的資料型態。既然是「幾乎所有的資料型態」,那麼想必列表中是可以儲存另一個列表的吧?
沒有錯的,我們可以在一個列表中,加上其它的列表——也可以在這些列表中的列表中,加上更多其它的列表… 一直這樣循環下去。事不宜遲,讓我們馬上建立一個我們很熟悉的列表:
>>> a = [1, 3, 5]
>>> print(a)
[1, 3, 5]
再熟悉不過了,對吧!接著,讓我們試著將這個列表 a 中的 1 號位置變成另外一個列表:
>>> a[1] = [99, 98, 97]
>>> print(a)
[1, [99, 98, 97], 5]
看起來會不會吧有些複雜呢?在第一行程式中,我們將 a[1]
變成了列表 [99, 98, 97]
。接下來,我們印出了列表 a,並且得到程式中的三行的輸出。
從這個輸出中,我們可以看到,現在列表 a 的第 0 項是 1,而第 2 項是 5,夾在中間的第 1 項,則代表著 [99, 98, 97]
這個列表。這種在列表中還有其它列表的情況,我們成為多維列表,或者在這個例子中,是二維列表。
建立多維列表
要建立一個多維列表,可以說是相當的簡單,因為過程跟任何其它類型變數的宣告都一模一樣。舉例來說,現在我們想要建立一個變數叫做 c,並且讓其值為一個二維陣列,那麼我們可以:
>>> c = [1, [0, 1, 2], 2, 3]
>>> for item in c:
... print(item)
...
1
[0, 1, 2]
2
3
是的,宣告一個多維的列表,與宣告一個一維的列表其實是一模一樣的,只是把其中的某一個項目改成另外一個列表而已!不只列表中的列表可以這樣寫,列表中的列表中的列表也可以這樣寫哦!以此類推。
>>> a = [1, [2, [3, 4]], 5]
>>> for elem in a:
... print(elem)
...
1
[2, [3, 4]]
5
多維列表的選取
還記得嗎?列表中的每一個項目,都有自己的位置編號,這些編號由 0 開始,依序往列表的右邊增加。在選取列表中的項目時,我們可以使用中括號 []
來代表該項目在列表中的位置,例如:
>>> m = [1, 3, 5]
>>> print(m[0])
1
>>> print(m[1])
3
>>> print(m[2])
5
同樣的邏輯,也可以運用在多維列表上:
>>> al = ["a", "b", ["c", "d"]]
>>> print(al[0])
a
>>> print(al[1])
b
>>> print(al[2])
['c', 'd']
但是如果我們想要選擇的是列表中的字母 c 呢?要怎麼寫才能讓電腦選取到列表中的另外一個列表?其實很簡單,我們可以使用兩個中括號 [][]
:
>>> print(al[2])
['c', 'd']
>>> print(al[2][0])
c
>>> print(al[2][1])
d
這樣的邏輯相當地簡單易懂。接著,讓我們來看看下面這個例子:
>>> mul = ['A', ['B', ['C', 'D'], 'E']]
讓我們分別印出 A、B、C、D、E,練習一下怎麼選取複雜列表中的項目吧!
>>> print(mul[0])
A
>>> print(mul[1][0])
B
>>> print(mul[1][1][0])
C
>>> print(mul[1][1][1])
D
>>> print(mul[1][2])
E