python經典面試題:列表和元組有什麼異同?
列表和元組是Python中最常用的兩種資料結構,字典是第三種。 相同點:
- 都是序列
- 都可以儲存任何資料型別
- 可以通過索引訪問
語法差異
使用方括號[]建立列表,而使用括號()建立元組。 請看以下示例:
>>> l = ["https://china-testing.github.io/", "https://www.oscobo.com/"] >>> t = ("https://china-testing.github.io/", "https://www.oscobo.com/") >>> print(l) ['https://china-testing.github.io/', 'https://www.oscobo.com/'] >>> print(t) ('https://china-testing.github.io/', 'https://www.oscobo.com/') >>> print(type(l)) <class 'list'> >>> print(type(t)) <class 'tuple'>
是否可變
列表是可變的,而元組是不可變的,這標誌著兩者之間的關鍵差異。
我們可以修改列表的值,但是不修改元組的值。
由於列表是可變的,我們不能將列表用作字典中的key。 但可以使用元組作為字典key。
>>> l[1] = "https://www.jianshu.com/u/69f40328d4f0" >>> l ['https://china-testing.github.io/', 'https://www.jianshu.com/u/69f40328d4f0'] >>> t[1] = "https://www.jianshu.com/u/69f40328d4f0" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment
重用與拷貝
元組無法複製。 原因是元組是不可變的。 如果執行tuple(tuple_name)將返回自己。
>>> copy_t = tuple(t) >>> print(t is copy_t) True >>> copy_l = list(l) >>> print(l is copy_l) False
參考資料
- 討論 釘釘群21745728 qq群144081101 567351477
- ofollow,noindex">本文最新版本地址
- 本文涉及的python測試開發庫 謝謝點贊!
- 本文相關海量書籍下載
- python工具書籍下載-持續更新
大小差異
Python將低開銷的較大的塊分配給元組,因為它們是不可變的。 對於列表則分配小記憶體塊。 與列表相比,元組的記憶體更小。 當你擁有大量元素時,元組比列表快。列表的長度是可變的。
>>> l = ["https://china-testing.github.io/", "https://www.oscobo.com/"] >>> t = ("https://china-testing.github.io/", "https://www.oscobo.com/") >>> print(l.__sizeof__()) 56 >>> print(t.__sizeof__()) 40
同構與異構
習慣上元組多用於用於儲存異構元素,異構元素即不同資料型別的元素,比如(ip,port)。 另一方面,列表用於儲存異構元素,這些元素屬於相同型別的元素,比如[int1,in2,in3]。