Python 元組拆包示例(Tuple Unpacking)
1.元組?
元組的特點(diǎn):
相當(dāng)于不可變得列表;
可用于沒(méi)有字段名的記錄。
pythn里的元組就相當(dāng)于C語(yǔ)言里的數(shù)組,是不可變的,但是也可以容納不同類型的元素,也是容器的一種。
>>> t = (1,2,'a','b','c') >>> t (1, 2, 'a', 'b', 'c') >>> type(t) <class 'tuple'>
元組主要有兩個(gè)方法:
index():獲取指定元素在元組內(nèi)的下標(biāo)
count():統(tǒng)計(jì)指定元素在元組內(nèi)出現(xiàn)的次數(shù)
元組的定義和結(jié)構(gòu)和列表很像,但是使用起來(lái)比較簡(jiǎn)單,元組的元素用‘()'包含起來(lái)。
其實(shí)在元組的使用過(guò)程中有一些比較方便和實(shí)用的小方法,接下來(lái)就做一個(gè)簡(jiǎn)單的介紹!
2.元祖拆包
元祖拆包就是將元組中的元素分別賦給變量:
>>> info = ('xian','2018','7.17') >>> info ('xian', '2018', '7.17') >>> city,year,date = info >>> city 'xian' >>> year '2018' >>> date '7.17'
拆包就相當(dāng)于把元組中的元素拆分成單個(gè)的元素,可以用這些被拆分了的元素來(lái)完成想要做的事!
比如,可以十分方便的輸出元組內(nèi)的值:
>>> print('%s\n%s\n%s\n'%info) xian 2018 7.17
還可以玩的更六一點(diǎn)哦:
>>> infos = [info,('jian','2018','7.22'),('zhengzhou','2018','9.1')] >>> infos [('xian', '2018', '7.17'), ('jian', '2018', '7.22'), ('zhengzhou', '2018', '9.1')] >>> for i in infos : print('%s %s %s'%i) xian 2018 7.17 jian 2018 7.22 zhengzhou 2018 9.1
當(dāng)然,還有更加666的用法哦,有時(shí)候我們可以多個(gè)參數(shù)寫進(jìn)一個(gè)元組里,然后把這個(gè)元組當(dāng)做相應(yīng)函數(shù)的參數(shù)列表穿進(jìn)去:
先介紹一個(gè)python的內(nèi)建函數(shù):divmod(a,b) a,b是兩個(gè)數(shù),這個(gè)函數(shù)返回一個(gè)元組,這個(gè)元組為(a//b,a%b),即返回a除以b,a%b的結(jié)果組成的元組。 現(xiàn)在我們就將一個(gè)元組作為divmod的參數(shù)傳進(jìn)去:
>>> a = (20,8) >>> divmod(*a) (2, 4) >>>
不過(guò)我們注意到,雖然我們將參數(shù)放進(jìn)了一個(gè)元組里,但是在作為參數(shù)列表傳進(jìn)去的時(shí)候在元組名前要加一個(gè) ‘ * ' ! 當(dāng)我只需要其中幾個(gè)元素的時(shí)候怎么辦呢?
>>> _,_,date = info >>> date '7.17'
這里‘ _ '就相當(dāng)于一個(gè)占位符,可以抵消掉我們不想要的元素! 這里又有一個(gè)問(wèn)題了,當(dāng)元組內(nèi)的元素太多,而我又只要其中幾個(gè)元素的值,總不能用很多變量去抵消我不要的元素吧?當(dāng)然不用!
>>> city,*rest = info >>> city 'xian' >>> rest ['2018', '7.17']
在這里我們用*var-name的方法代表剩余的元素,在python里常用這種方法來(lái)代表不起確定數(shù)量參數(shù)!
>>> a,b,*rest,c,d = range(10) >>> a 0 >>> b 1 >>> c 8 >>> d 9 >>> rest [2, 3, 4, 5, 6, 7]
在python里有一個(gè)很方便交換變量值的方法:
>>> a = 10 >>> b = 20 >>> a,b = b,a >>> a 20 >>> b
3.具名元組?
為什么在文章開(kāi)頭說(shuō)元祖的特點(diǎn)之一是沒(méi)有字段名記錄呢?如果元組里的元素有字段名,那么元組不就是字典,是鍵-值對(duì)了嗎?的確,我們一般用的元組中的各個(gè)元素是沒(méi)有字段名的,但是還有一種特殊的元組——具名元組。
具名元組是帶有字段名元組,雖然說(shuō)是元組,但是實(shí)際上是類的一種。要想構(gòu)建一個(gè)具名元組,需要使用python里的一個(gè)工廠函數(shù):collections.namedtuple(typename, field_names, verbose=False, rename=False) . namedtuple需要兩個(gè)必要函數(shù),typename是構(gòu)建的具名元組的元組類型名,field_names是這個(gè)具名元組類里的各個(gè)字段的名字,名字之間用空格或者逗號(hào)隔開(kāi),verbose若為True則會(huì)打印這個(gè)類的詳細(xì)信息,若rename為True則會(huì)把field_names中與python關(guān)鍵字沖突或者重復(fù)的字段用這個(gè)關(guān)鍵字的位置來(lái)替代,如:[‘a(chǎn)bc', ‘def', ‘ghi', ‘a(chǎn)bc']會(huì)被轉(zhuǎn)換為 [‘a(chǎn)bc', ‘_1', ‘ghi', ‘_3']。
>>>City = namedtuple('City',"country,capital,population") >>>xian = City('china','beijing','1000w') >>>> xian City(country='china', capital='beijing', population='1000w')
從以上代碼我們可以看到,我們可以使用namedtuple構(gòu)建一個(gè)類,創(chuàng)建的類就是一個(gè)具名元組,在我們初始化一個(gè)具名元組的時(shí)候就像初始化一個(gè)類一樣!
這篇Python 元組拆包示例(Tuple Unpacking)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)批量上傳本地maven庫(kù)到nexus
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量上傳本地maven庫(kù)到nexus,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考下2024-01-01pytorch 修改預(yù)訓(xùn)練model實(shí)例
今天小編就為大家分享一篇pytorch 修改預(yù)訓(xùn)練model實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01django channels使用和配置及實(shí)現(xiàn)群聊
本文主要介紹了django channels使用和配置及實(shí)現(xiàn)群聊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05tensorflow實(shí)現(xiàn)簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò)
這篇文章主要為大家詳細(xì)介紹了tensorflow實(shí)現(xiàn)簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Python數(shù)學(xué)建模PuLP庫(kù)線性規(guī)劃入門示例詳解
這篇文章主要為大家介紹了Python數(shù)學(xué)建模PuLP庫(kù)線性規(guī)劃入門示例詳解,想學(xué)習(xí)關(guān)于Python建模的同學(xué)可以學(xué)習(xí)參考下,希望能夠有所幫助2021-10-10