天天看點

python中元組和集合的差別_Python-清單和元組之間有什麼差別?

小編典典

除了元組是不可變的之外,還應有語義上的差別來指導它們的用法。元組是異構資料結構(即,它們的條目具有不同的含義),而清單是同類序列。元組具有結構,清單具有順序。

使用這種差別可以使代碼更加明确和易于了解。

一個示例是成對的頁和行号,以成對參考書中的位置,例如:

my_location = (42, 11) # page number, line number

然後,您可以将其用作字典中的鍵來存儲有關位置的注釋。另一方面,清單可用于存儲多個位置。自然地,人們可能想在清單中添加或删除位置,是以使清單可變是有意義的。另一方面,從現有位置添加或删除項目沒有意義-是以,元組是不可變的。

在某些情況下,您可能想更改現有位置元組中的項目,例如在頁面的各行中進行疊代時。但是元組不變性迫使您為每個新值建立一個新的位置元組。從表面上看,這似乎很不友善,但是使用這樣的不可變資料是值類型和函數式程式設計技術的基石,它可以具有很多優點。

關于此問題,有一些有趣的文章,例如“ Python元組不僅僅是常量清單”或“了解Python中的元組與清單”。官方Python文檔也提到了這一點

“組是不可變的,并且通常包含一個異類序列…”。

在像Haskell這樣的靜态類型語言中,元組中的值通常具有不同的類型,并且元組的長度必須固定。在清單中,所有值都具有相同的類型,并且長度不是固定的。是以差別非常明顯。

最後,Python中有一個namedtuple,這很有意義,因為一個元組應該已經具有結構。這強調了元組是類和執行個體的輕量級替代方案的思想。

2020-02-08