Python 元組拆包示例(Tuple Unpacking)
1.元組?
元組的特點:
相當于不可變得列表;
可用于沒有字段名的記錄。
pythn里的元組就相當于C語言里的數(shù)組,是不可變的,但是也可以容納不同類型的元素,也是容器的一種。
>>> t = (1,2,'a','b','c') >>> t (1, 2, 'a', 'b', 'c') >>> type(t) <class 'tuple'>
元組主要有兩個方法:
index():獲取指定元素在元組內(nèi)的下標
count():統(tǒng)計指定元素在元組內(nèi)出現(xiàn)的次數(shù)
元組的定義和結(jié)構(gòu)和列表很像,但是使用起來比較簡單,元組的元素用‘()'包含起來。
其實在元組的使用過程中有一些比較方便和實用的小方法,接下來就做一個簡單的介紹!
2.元祖拆包
元祖拆包就是將元組中的元素分別賦給變量:
>>> info = ('xian','2018','7.17')
>>> info
('xian', '2018', '7.17')
>>> city,year,date = info
>>> city
'xian'
>>> year
'2018'
>>> date
'7.17'
拆包就相當于把元組中的元素拆分成單個的元素,可以用這些被拆分了的元素來完成想要做的事!
比如,可以十分方便的輸出元組內(nèi)的值:
>>> print('%s\n%s\n%s\n'%info)
xian
2018
7.17
還可以玩的更六一點哦:
>>> 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
當然,還有更加666的用法哦,有時候我們可以多個參數(shù)寫進一個元組里,然后把這個元組當做相應(yīng)函數(shù)的參數(shù)列表穿進去:
先介紹一個python的內(nèi)建函數(shù):divmod(a,b) a,b是兩個數(shù),這個函數(shù)返回一個元組,這個元組為(a//b,a%b),即返回a除以b,a%b的結(jié)果組成的元組。 現(xiàn)在我們就將一個元組作為divmod的參數(shù)傳進去:
>>> a = (20,8) >>> divmod(*a) (2, 4) >>>
不過我們注意到,雖然我們將參數(shù)放進了一個元組里,但是在作為參數(shù)列表傳進去的時候在元組名前要加一個 ‘ * ' ! 當我只需要其中幾個元素的時候怎么辦呢?
>>> _,_,date = info >>> date '7.17'
這里‘ _ '就相當于一個占位符,可以抵消掉我們不想要的元素! 這里又有一個問題了,當元組內(nèi)的元素太多,而我又只要其中幾個元素的值,總不能用很多變量去抵消我不要的元素吧?當然不用!
>>> 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.具名元組?
為什么在文章開頭說元祖的特點之一是沒有字段名記錄呢?如果元組里的元素有字段名,那么元組不就是字典,是鍵-值對了嗎?的確,我們一般用的元組中的各個元素是沒有字段名的,但是還有一種特殊的元組——具名元組。
具名元組是帶有字段名元組,雖然說是元組,但是實際上是類的一種。要想構(gòu)建一個具名元組,需要使用python里的一個工廠函數(shù):collections.namedtuple(typename, field_names, verbose=False, rename=False) . namedtuple需要兩個必要函數(shù),typename是構(gòu)建的具名元組的元組類型名,field_names是這個具名元組類里的各個字段的名字,名字之間用空格或者逗號隔開,verbose若為True則會打印這個類的詳細信息,若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)資料,文中通過圖文將解決的辦法介紹的非常詳細,需要的朋友可以參考下2023-02-02
Python 自動化處理Excel和Word實現(xiàn)自動辦公
毫無疑問,Microsoft Excel 和 Word 是我們?nèi)粘^k公中使用最廣泛的辦公軟件。將反復(fù)、復(fù)雜的工作自動化處理,是我們需要思考的問題,本篇文章幫你解決這個問題2021-11-11
Python學(xué)習(xí)之異常中的finally使用詳解
這篇文章主要為大家介紹一下Python異常語法中的另一個成員—finally,通過學(xué)習(xí)finally,可以幫助我們更好的處理異常,快來跟隨小編一起學(xué)習(xí)一下吧2022-03-03

