- Python大學實用教程
- 齊偉
- 724字
- 2021-01-22 18:49:52
3.5 元組
元組(tuple)跟列表很相似,從外表看它們的差別就在于[]和()——列表是用方括號包裹,元組是用圓括號包裹。但就是這點不大的差別,讓元組這個Python的內置對象有了它的獨特之處。

這些都是創建元組的方法。從這些所創建的元組可以總結為:元組是用圓括號括起來的,其中的元素之間用逗號(英文狀態)隔開。元組中的元素是任意類型的Python對象。
值得注意的是,如果定義的元組中只有一個元素,需要這樣做:

元組和列表、字符串一樣,同屬于序列,因此它具有序列的所有特點。
每個元素都對應著自己的索引,并可以切片。

序列的基本操作,對于元組也是成立的。

元組的這些操作與列表完全一致。有不一樣的地方嗎?

這就顯示了元組和列表的最大差別。列表可以通過索引修改某個元素,但是元組不能如此操作,這說明元組是不可修改的,這個特點類似字符串。
用dir函數查看元組的屬性和方法,會看到:

所有在列表中可以修改列表的方法,在元組中都不存在了,因為元組不可修改。雖然如此,如果要修改元組,怎么辦?
用list函數和tuple函數能夠實現列表和元組之間的轉化。


所以,可以先把元組轉化為列表,然后進行修改。
讀者可能很懷疑元組這種對象的應用場景,既然它與列表有那么多相似處,為什么還要用它呢?
一般認為,元組有如下使用情景:
? 元組比列表操作速度快。如果定義了一個值,并且唯一要用它做的是不斷地遍歷它,那么請使用元組代替列表。
? 如果對不需要修改的數據進行“寫保護”,即該數據是常量,那么此時使用元組。如果必須改變這些值,則可以轉換為列表修改。
? 元組可以在字典(又一種對象類型,詳見3.6節)中被用作key,但是列表不可以。字典的key必須是不可變的。元組本身就是不可改變的,而列表是可變的。
所以,元組自有其用武之地,既然已經存在于Python中,必然有其合理性。