tuple(元組)
另一種有序列表叫元組:tuple 。tuple 和 list 非常類似,但是 tuple 一旦初始化就不能修改。那么不能修改是指什么意思呢?
tuple 不可變是指當(dāng)你創(chuàng)建了 tuple 時(shí)候,它就不能改變了,也就是說它也沒有 append(),insert() 這樣的方法,但它也有獲取某個(gè)索引值的方法,但是不能賦值。那么為什么要有 tuple 呢?那是因?yàn)?tuple 是不可變的,所以代碼更安全。所以建議能用 tuple 代替 list 就盡量用 tuple 。
1、創(chuàng)建 tuple(元組)
元組創(chuàng)建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。
tuple1=('兩點(diǎn)水','twowter','liangdianshui',123,456) tuple2='兩點(diǎn)水','twowter','liangdianshui',123,456
創(chuàng)建空元組
tuple3=()
元組中只包含一個(gè)元素時(shí),需要在元素后面添加逗號
tuple4=(123,)
如果不加逗號,創(chuàng)建出來的就不是 tuple (元組),而是指 123 這個(gè)數(shù)了,這是因?yàn)槔ㄌ?()既可以表示 tuple,又可以表示數(shù)學(xué)公式中的小括號,這就產(chǎn)生了歧義,因此,Python 規(guī)定,這種情況下,按小括號進(jìn)行計(jì)算,計(jì)算結(jié)果自然是 123 。具體看下圖 tuple4 和 tuple5 的輸出值
2、tuple(元組)的索引
元組下標(biāo)索引從0開始,可以進(jìn)行截取,組合等。
3、訪問 tuple (元組)
tuple(元組)可以使用下標(biāo)索引來訪問元組中的值
#-*-coding:utf-8-*- tuple1=('兩點(diǎn)水','twowter','liangdianshui',123,456) tuple2='兩點(diǎn)水','twowter','liangdianshui',123,456 print(tuple1[1]) print(tuple2[0])
輸出的結(jié)果:
4、修改 tuple (元組)
上面不是花了一大段來說 tuple 是不可變的嗎?這里怎么又來修改 tuple (元組) 了。那是因?yàn)樵M中的元素值是不允許修改的,但我們可以對元組進(jìn)行連接組合,還有通過修改其他列表的值從而影響 tuple 的值。
具體看下面的這個(gè)例子:
#-*-coding:utf-8-*- list1=[123,456] tuple1=('兩點(diǎn)水','twowater','liangdianshui',list1) print(tuple1) list1[0]=789 list1[1]=100 print(tuple1)
輸出的結(jié)果:
('兩點(diǎn)水', 'twowater', 'liangdianshui', [123, 456]) ('兩點(diǎn)水', 'twowater', 'liangdianshui', [789, 100])
可以看到,兩次輸出的 tuple 值是變了的。我們看看 tuple1 的存儲(chǔ)是怎樣的。
修改tuple流程圖
可以看到,tuple1 有四個(gè)元素,最后一個(gè)元素是一個(gè) List ,List 列表里有兩個(gè)元素,當(dāng)我們把 List 列表中的兩個(gè)元素 124 和 456 修改為 789 和 100 的時(shí)候,從輸出來的 tuple1 的值來看,好像確實(shí)是改變了,但其實(shí)變的不是 tuple 的元素,而是 list 的元素。tuple 一開始指向的 list 并沒有改成別的 list,所以,tuple 所謂的“不變”是說,tuple 的每個(gè)元素,指向永遠(yuǎn)不變。注意是 tupe1 中的第四個(gè)元素還是指向原來的 list ,是沒有變的。
5、刪除 tuple (元組)
tuple 元組中的元素值是不允許刪除的,但我們可以使用 del 語句來刪除整個(gè)元組
#-*-coding:utf-8-*- tuple1=('兩點(diǎn)水','twowter','liangdianshui',[123,456]) print(tuple1) del tuple1
6、tuple (元組)運(yùn)算符
與字符串一樣,元組之間可以使用 + 號和 * 號進(jìn)行運(yùn)算。這就意味著他們可以組合和復(fù)制,運(yùn)算后會(huì)生成一個(gè)新的元組。
7、元組內(nèi)置函數(shù)