Python 元組拆包示例(Tuple Unpacking)
1.元組?
元組的特點(diǎn):
相當(dāng)于不可變得列表;
可用于沒有字段名的記錄。
pythn里的元組就相當(dāng)于C語言里的數(shù)組,是不可變的,但是也可以容納不同類型的元素,也是容器的一種。
>>> t = (1,2,'a','b','c') >>> t (1, 2, 'a', 'b', 'c') >>> type(t) <class 'tuple'>
元組主要有兩個方法:
index():獲取指定元素在元組內(nèi)的下標(biāo)
count():統(tǒng)計指定元素在元組內(nèi)出現(xiàn)的次數(shù)
元組的定義和結(jié)構(gòu)和列表很像,但是使用起來比較簡單,元組的元素用‘()'包含起來。
其實(shí)在元組的使用過程中有一些比較方便和實(shí)用的小方法,接下來就做一個簡單的介紹!
2.元祖拆包
元祖拆包就是將元組中的元素分別賦給變量:
>>> info = ('xian','2018','7.17')
>>> info
('xian', '2018', '7.17')
>>> city,year,date = info
>>> city
'xian'
>>> year
'2018'
>>> date
'7.17'
拆包就相當(dāng)于把元組中的元素拆分成單個的元素,可以用這些被拆分了的元素來完成想要做的事!
比如,可以十分方便的輸出元組內(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ù)寫進(jìn)一個元組里,然后把這個元組當(dāng)做相應(yīng)函數(shù)的參數(shù)列表穿進(jìn)去:
先介紹一個python的內(nèi)建函數(shù):divmod(a,b) a,b是兩個數(shù),這個函數(shù)返回一個元組,這個元組為(a//b,a%b),即返回a除以b,a%b的結(jié)果組成的元組。 現(xiàn)在我們就將一個元組作為divmod的參數(shù)傳進(jìn)去:
>>> a = (20,8) >>> divmod(*a) (2, 4) >>>
不過我們注意到,雖然我們將參數(shù)放進(jìn)了一個元組里,但是在作為參數(shù)列表傳進(jìn)去的時候在元組名前要加一個 ‘ * ' ! 當(dāng)我只需要其中幾個元素的時候怎么辦呢?
>>> _,_,date = info >>> date '7.17'
這里‘ _ '就相當(dāng)于一個占位符,可以抵消掉我們不想要的元素! 這里又有一個問題了,當(dāng)元組內(nèi)的元素太多,而我又只要其中幾個元素的值,總不能用很多變量去抵消我不要的元素吧?當(dāng)然不用!
>>> city,*rest = info >>> city 'xian' >>> rest ['2018', '7.17']
在這里我們用*var-name的方法代表剩余的元素,在python里常用這種方法來代表不起確定數(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里有一個很方便交換變量值的方法:
>>> a = 10 >>> b = 20 >>> a,b = b,a >>> a 20 >>> b
3.具名元組?
為什么在文章開頭說元祖的特點(diǎn)之一是沒有字段名記錄呢?如果元組里的元素有字段名,那么元組不就是字典,是鍵-值對了嗎?的確,我們一般用的元組中的各個元素是沒有字段名的,但是還有一種特殊的元組——具名元組。
具名元組是帶有字段名元組,雖然說是元組,但是實(shí)際上是類的一種。要想構(gòu)建一個具名元組,需要使用python里的一個工廠函數(shù):collections.namedtuple(typename, field_names, verbose=False, rename=False) . namedtuple需要兩個必要函數(shù),typename是構(gòu)建的具名元組的元組類型名,field_names是這個具名元組類里的各個字段的名字,名字之間用空格或者逗號隔開,verbose若為True則會打印這個類的詳細(xì)信息,若rename為True則會把field_names中與python關(guān)鍵字沖突或者重復(fù)的字段用這個關(guān)鍵字的位置來替代,如:[‘a(chǎn)bc', ‘def', ‘ghi', ‘a(chǎn)bc']會被轉(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)建一個類,創(chuàng)建的類就是一個具名元組,在我們初始化一個具名元組的時候就像初始化一個類一樣!
這篇Python 元組拆包示例(Tuple Unpacking)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何徹底解決python?NameError:name?'__file__'?is?not?
這篇文章主要給大家介紹了關(guān)于如何徹底解決python?NameError:name?'__file__'?is?not?defined的相關(guān)資料,文中通過圖文將解決的辦法介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
Python 自動化處理Excel和Word實(shí)現(xiàn)自動辦公
毫無疑問,Microsoft Excel 和 Word 是我們?nèi)粘^k公中使用最廣泛的辦公軟件。將反復(fù)、復(fù)雜的工作自動化處理,是我們需要思考的問題,本篇文章幫你解決這個問題2021-11-11
Scrapy從腳本運(yùn)行到分布式爬取的技巧(進(jìn)階實(shí)踐指南)
Scrapy作為Python生態(tài)中最強(qiáng)大的爬蟲框架之一,其官方文檔的"Common Practices"章節(jié)總結(jié)了多個高頻使用場景的解決方案,這篇文章給大家介紹Scrapy進(jìn)階實(shí)踐指南:從腳本運(yùn)行到分布式爬取,感興趣的朋友一起看看吧2025-05-05
python中偏函數(shù)partial用法實(shí)例分析
這篇文章主要介紹了python中偏函數(shù)partial用法,實(shí)例分析了偏函數(shù)partial的功能、定義及使用方法,需要的朋友可以參考下2015-07-07
Python學(xué)習(xí)之異常中的finally使用詳解
這篇文章主要為大家介紹一下Python異常語法中的另一個成員—finally,通過學(xué)習(xí)finally,可以幫助我們更好的處理異常,快來跟隨小編一起學(xué)習(xí)一下吧2022-03-03

