列表非常適合用于存儲在程序運行期間可能變化的數據集。列表是可以修改的,這對處理網站的用戶列表或游戲中的角色列表至關重要。然而,有時候你需要創建一系列不可修改的元素,元組可以滿足這種需求。Python將不能修改的值稱為不可變的,而不可變的列表被稱為元組。
定義元組
元組看起來猶如列表,但使用圓括號而不是方括號來標識。定義元組后,就可以使用索引來訪問其元素,就像訪問列表元素一樣。
例如,如果有一個大小不應改變的矩形,可將其長度和寬度存儲在一個元組中,從而確保它們是不能修改的:
以dimensions.py文件為例:
? dimensions = (200, 50)
? print(dimensions[0])print(dimensions[1])
我們首先定義了元組dimensions (見?),為此我們使用了圓括號而不是方括號。接下來,我們分別打印該元組的各個元素,使用的語法與訪問列表元素時使用的語法相同(見?):
200
50
下面來嘗試修改元組dimensions 中的一個元素,看看結果如何:
dimensions = (200, 50)
? dimensions[0] = 250
?處的代碼試圖修改第一個元素的值,導致Python返回類型錯誤消息。由于試圖修改元組的操作是被禁止的,因此Python指出不能給元組的元素賦值:
Traceback (most recent call last):File "dimensions.py", line 3, in <module>dimensions[0] = 250
TypeError: 'tuple' object does not support item assignment
代碼試圖修改矩形的尺寸時,Python報告錯誤,這很好,因為這正是我們希望的。
遍歷元組中的所有值
像列表一樣,也可以使用for 循環來遍歷元組中的所有值:
dimensions = (200, 50)
for dimension in dimensions:print(dimension)
就像遍歷列表時一樣,Python返回元組中所有的元素,:
200
50
修改元組變量
雖然不能修改元組的元素,但可以給存儲元組的變量賦值。因此,如果要修改前述矩形的尺寸,可重新定義整個元組:
我們首先定義了一個元組,并將其存儲的尺寸打印了出來(見?);接下來,將一個新元組存儲到變量dimensions 中(見?);然后,打印新的尺寸(見?)。這次,Python 不會報告任何錯誤,因為給元組變量賦值是合法的:
Original dimensions:
200
50
Modified dimensions:
400
100
相比于列表,元組是更簡單的數據結構。如果需要存儲的一組值在程序的整個生命周期內都不變,可使用元組。