列表和元組,都是乙個可以放置任意資料型別的有序集合。
l = [1, 2, 'hello', 'world'] # 列表中同時含有int和string型別的元素
l[1, 2, 'hello', 'world']
tup = ('jason', 22) # 元組中同時含有int和string型別的元素
tup('jason', 22)
列表與元組的區別
下面的例子中,我們分別建立了乙個列表與元組。你可以看到,對於列表,我們可以很輕鬆地讓其最後乙個元素,由 4 變為 40;但是,如果你對元組採取相同的操作,python 就會報錯,原因就是元組是不可變的。
l = [1, 2, 3, 4]
l[3] = 40 # 和很多語言類似,python中索引同樣從0開始,l[3]表示訪問列表的第四個元素
l[1, 2, 3, 40]
tup = (1, 2, 3, 4)
tup[3] = 40
traceback (most recent call last):
file "", line 1, in typeerror: 'tuple' object does not support item assignment
如果想對已有的元組做任何改變,只能重新開闢一塊記憶體,建立新元組。
tup = (1, 2, 3, 4)
new_tup = tup + (5, ) # 建立新的元組new_tup,並依次填充原元組的值。
new _tup
(1, 2, 3, 4, 5)
python 中的列表和元組都支援負數索引,-1 表示最後乙個元素,-2 表示倒數第二個元素,以此類推。
l = [1, 2, 3, 4]
l[-1]
4tup = (1, 2, 3, 4)
tup[-1]
4
列表和元組都支援切片操作:
l = [1, 2, 3, 4]
l[1:3] # 返回列表中索引從1到2的子列表
[2, 3]
tup = (1, 2, 3, 4)
tup[1:3] # 返回元組中索引從1到2的子元組
(2, 3)
列表和元組可以隨意巢狀:
l = [[1, 2, 3], [4, 5]] # 列表的每乙個元素也是乙個列表
tup = ((1, 2, 3), (4, 5)) # 元組的每乙個元素也是乙個元組
列表和元組可以通過 list() 和 tuple() 函式相互轉換:
list((1, 2, 3))
[1, 2, 3]
tuple([1, 2, 3])
(1, 2, 3)
列表和元組常用的內建函式:
l = [3, 2, 3, 7, 8, 1]
l.count(3) #
2l.index(7)
3l.reverse()
l[1, 8, 7, 3, 2, 3]
l.sort()
l[1, 2, 3, 3, 7, 8]
tup = (3, 2, 3, 7, 8, 1)
tup.count(3)
2tup.index(7)
3list(reversed(tup))
[1, 8, 7, 3, 2, 3]
sorted(tup)
[1, 2, 3, 3, 7, 8]
這幾個函式的含義。
l = [1, 2, 3]
l.__sizeof__()
64tup = (1, 2, 3)
tup.__sizeof__()
48
對列表和元組,我們放置了相同的元素,但是元組的儲存空間,卻比列表要少 16 位元組。由於列表是動態的,所以它需要儲存指標,來指向對應的元素(上述例子中,對於 int 型,8 位元組)。另外,由於列表可變,所以需要額外儲存已經分配的長度大小(8 位元組),這樣才可以實時追蹤列表空間的使用情況,當空間不足時,及時分配額外空間。
l =
l.__sizeof__() // 空列表的儲存空間為40位元組
40l.__sizeof__()
72 // 加入了元素1之後,列表為其分配了可以儲存4個元素的空間 (72 - 40)/8 = 4
l.__sizeof__()
72 // 由於之前分配了空間,所以加入元素2,列表空間不變
l.__sizeof__()
72 // 同上
l.__sizeof__()
72 // 同上
l.__sizeof__()
104 // 加入元素5之後,列表的空間不足,所以又額外分配了可以儲存4個元素的空間
如果儲存的資料和數量不變,比如你有乙個函式,需要返回的是乙個地點的經緯度,然後直接傳給前端渲染,那麼肯定選用元組更合適。
如果儲存的資料或數量是可變的,比如社交平台上的乙個日誌功能,是統計乙個使用者在一周之內看了哪些使用者的帖子,那麼則用列表更合適。
Python列表和元組
序列可修改,而元組不能。eda edward 42 序列可包含其它列表 edward edward 43 john john 44 database edward,john database edward 43 john 44 序列的分片 nubs range 10 nubs 0,1,2,3,4,5...
python 列表和元組
資料結構 資料結構是以某種方式組合起來的資料元素。在python中最基本的資料結構為序列,序列中的每個元素都有編號,就像學號,可以通過學號找到你本人。不同的序列中的編號一般都是從0開始。序列包括元組和列表,另外還有字典。列表和元組的區別 列表是可以修改的,而元組不可以。在處理資料要特別注意這一點,但...
Python 列表和元組
1 序列是python中最基本的資料結構。列中的每個元素都分配乙個數字,該數字代表了該元素的位置或索引,從0開始依次類推。2 python中常見的序列有列表 元組和字串。3 序列可以進行的操作有索引 切片 加 乘檢查成員。python中已經內建了確定序列長度以及確定最大和最小元素的方法。4 序列是最...