您好,登錄后才能下訂單哦!
這篇文章主要講解了“python具名元組有什么作用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“python具名元組有什么作用”吧!
Python標(biāo)準(zhǔn)庫collections中定義了具名元組(namedtuple)工廠函數(shù),它可以構(gòu)建帶字段名的元組。
變量名 = namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)
namedtuple工廠函數(shù)的參數(shù)詳解:
typename:定義具名元組的名稱,字符串型。
field_names:定義具名元組的字段名。該參數(shù)可以使用2種格式:
內(nèi)部元素都是字符串的列表或元組;
例如['商品','單價(jià)',’數(shù)量']或('商品','單價(jià)',’數(shù)量')
以英文逗號','分隔的長字符串。字段名必須符合以下規(guī)則:
例如'商品,單價(jià),數(shù)量'
字段名命名規(guī)則:
不能與關(guān)鍵字重名
不能以下劃線開頭
以字母(包括漢字)開頭,由字母、數(shù)字、下劃線組成。
rename:默認(rèn)是False,意思是必須指定字段名。若為True,系統(tǒng)會對缺省的、重復(fù)的字段名自動重命名為'_索引值'。
defaults:設(shè)置默認(rèn)值,可以是列表、元組,當(dāng)字段數(shù)量大于defaults的元素?cái)?shù)量時(shí),后面的字段獲得缺省值。
例如字段名有'a','b','c'這3個(gè),缺省值給了'1','2'兩個(gè)缺省值時(shí),'b'=1,'c'=2。
module:設(shè)置所屬模塊,默認(rèn)是'__main__'。
具名元組使用案例如下:
from collections import namedtuple def file_to_list(file): with open(file, encoding='utf8') as f: # 創(chuàng)建具名元組構(gòu)造器,具名元組名稱是goods,字段名源自文件首行(除去頭尾空白符) # 具名元組構(gòu)造器的變量名是goods。 goods = namedtuple('goods', f.readline().strip()) fruit_list = [] for line in f: if len(line) < 3: # 過濾空行及數(shù)據(jù)不完整的行。 continue # 讀取一行文件內(nèi)容,去除頭尾空白符,以','分割成列表 # 用*打散列表,將列表中的元素分別作為參數(shù)傳入goods具名元組構(gòu)造器 line = goods(*(line.strip().split(','))) fruit_list.append(line) return fruit_list l1 = file_to_list('list.txt') print(l1[0]) print(l1[0].商品, l1[1].單價(jià), l1[1].數(shù)量) print(l1[1][0], l1[1][1], l1[1][2]) print(l1[2][0], l1[1][1:3]) out: goods(商品='蘋果', 單價(jià)='4.8', 數(shù)量='5') 蘋果 2.9 10 雪梨 2.9 10 大棗 ('2.9', '10')
通過以上案例可以了解怎么創(chuàng)造具名元組構(gòu)造器,怎么用具名元組構(gòu)造器創(chuàng)建具名元組。
具名元組有以下幾個(gè)優(yōu)點(diǎn):
具名元組是元組的子類,繼承了元組的所有特性,也就是說具名元組可以用所有元組可用的方法和屬性。
具名元組和元組存儲數(shù)據(jù)消耗的內(nèi)存是一樣的,與字典相比大大節(jié)省空間。
具名元組可以用字段名訪問數(shù)據(jù),大大提高代碼的可讀性。
感謝各位的閱讀,以上就是“python具名元組有什么作用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對python具名元組有什么作用這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。