1. 程式人生 > 其它 >python 元組(tuple)和列表(list)區別

python 元組(tuple)和列表(list)區別

python 元組(tuple)和列表(list)區別 (轉自CSDN部落格)

在Python資料型別中有兩個物件:元組 tuple 和列表 list 。

tuple
其實在很多比較“資深”的程式語言裡開始是沒有元組的,比如:Java、C++、C# 等,但是由於元組的靈活和便捷性,最後這些程式語言也都紛紛加上了。並且很多年輕的程式語言 Python、Scala 等,一開始就內建了元組型別。

之所以元組這麼受歡迎,其實最關鍵的一點是它的語法的靈活和便捷性,提高了程式設計體驗。其中最大的一個特性就是使函式可以返回多個值,這個特性很常用。

1. 函式返回(return)多個值

函式返回多個值?對,你沒有聽錯。函式是可以返回多個值的。如:

就是一個返回座標值(x , y)的函式,我們同時獲取了多個值 x 和 y 。

但是這和 tuple元組有什麼關係了?

其實這裡存在一個假象,Python函式返回的值本質上還是一個單值,看下面程式碼:

從列印結果可以看出,這裡返回值就是一個tuple!由於在語法上,返回一個tuple是可以省略括號的,而多個變數可以同時接收一個tuple,按位置賦給對應的值。

所以,Python的函式返回多值時,其實就是返回一個tuple。是不是突然覺得 tuple 幫了大忙,使結果的獲取更簡單了呢?

2. tuple 不可變的好處

相對於 list 而言,tuple 是不可變的,這使得它可以作為 dict 的 key,或者扔進 set 裡,而 list 則不行。

tuple 放棄了對元素的增刪(記憶體結構設計上變的更精簡),換取的是效能上的提升:建立 tuple 比 list 要快,儲存空間比 list 佔用更小。所以就出現了“能用 tuple 的地方就不用 list”的說法。

多執行緒併發的時候,tuple 是不需要加鎖的,不用擔心安全問題,編寫也簡單多了。

二、元組到底可不可以被修改

1、建立和訪問一個元組如果建立一個空元組,直接使用小括號即可;
如果要建立的元組中只有一個元素,要在它的後面加上一個逗號‘,’。

元組裡只有一個元素的時候,逗號(,)非常重要

2、更新和刪除元組

直接在同一個元組上更新是不可行的,但是可以通過拷貝現有的元組片段構造一個新的元組的方式解決。


通過分片的方法讓元組拆分成兩部分,然後再使用連線操作符(+)合併成一個新元組,最後將原來的變數名(temp)指向連線好的新元組。在這裡就要注意了,逗號是必須的,小括號也是必須的!

刪除元組中的元素:對於元組是不可變的原則來說,單獨刪除一個元素是不可能的,當然你可以利用切片的方式更新元組,間接的刪除一個元素。

在日常中很少用del去刪除整個元組,因為Python的回收機制會在這個元組不再被使用的時候自動刪除。

最後成員關係操作符 in 和 not in 也可以直接應用在元組上,這跟列表是一樣的。