Python 列表和元組

2022-06-24 05:57:08 字數 2621 閱讀 1186

列表和元組,都是乙個可以放置任意資料型別的有序集合

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 序列是最...