學一門語言,可以用對比其他語言方法加深對這門語言特點的理解。
一、定義:列表和元組,都是一個可以放置任意數據類型的有序集合。
mutable的列表:動態的,可以改變元素
immutable的元組:靜態的,不可以改變元素
二、支持負數索引,支持切片,支持嵌套
切片操作:
list = [1, 2, 3, 4] l[1:3] # 返回列表中索引從 1 到 2 的子列表 (不包含3) [2, 3] tup = (1, 2, 3, 4) tup[1:3] # 返回元組中索引從 1 到 2 的子元組 (不包含3) (2, 3)
接着比較下list 與 tuple的存儲空間與執行時間的差異。
三、存儲空間差異。
tuple是靜態的固定大小的,而list是動態分配存儲空間,自動擴容的。
同樣的元素,list要存儲指向元素的指針與要存儲當前長度大小,所以要比tuple占更多的存儲空間。例:
l = [1, 2, 3] l.__sizeof__() 64 tup = (1, 2, 3) tup.__sizeof__() 48
四、使用場景
存儲數據固定不變的用tuple,如函數返回值
存儲數據可變的情況用用list.
參考資料:
極客時間《Python核心技術與實戰》專欄