亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

Python 的集合模塊有一個(gè)稱為“Namedtuple”的功能,“Namedtuple”是一個(gè)帶有命名元素的元組,使代碼更具表現(xiàn)力。就像 Python 中的字典一樣,“Namedtuple”允許我們使用元組的成員而不是索引來訪問元素。

使用 Python 命名元組增強(qiáng)代碼清晰度

了解如何創(chuàng)建、解構(gòu)和優(yōu)化內(nèi)存使用,以獲得更簡(jiǎn)潔、更易讀的代碼。探索實(shí)際示例和最佳實(shí)踐。

Python 的集合模塊有一個(gè)稱為“Namedtuple”的功能,“Namedtuple”是一個(gè)帶有命名元素的元組,使代碼更具表現(xiàn)力。就像?Python?中的字典一樣,“Namedtuple”允許我們使用元組的成員而不是索引來訪問元素。

創(chuàng)建命名元組

要?jiǎng)?chuàng)建一個(gè)命名元組,我們必須使用集合模塊中的函數(shù)“namedtuple”。

from?collections?import?namedtuple

#?Define?a?employee?tuple?that?has?fields?id,?name?and?location.
Employee?=?namedtuple?('Employee',?'id?name?location')

#?Create?instances?of?Employee
employee1?=?Employee?(id=10,?name='John?Doe',?location='Atlanta')
employee2?=?Employee?(id=11,?name='Mick',?location='Dallas')

登錄后復(fù)制

從 Namedtuple 訪問元素

“Namedtuple”為元素訪問提供了雙重機(jī)制。首先,可以通過屬性名稱訪問元素,第二種機(jī)制使用傳統(tǒng)的數(shù)字索引。

print(f"{employee1.name}?-?{employee1.location}")?#?John?Doe?-?Atlanta
print(f"{employee2.name}?-?{employee2.location}")?#?Mick?–?Dallas

登錄后復(fù)制

也可以使用數(shù)字索引訪問元素。

print(f"{employee1[1]}?-?{employee1[2]}")?#?John?Doe?-?Atlanta
print(f"{employee2[1]}?-?{employee2[2]}")?#?Mick?–?Dallas

登錄后復(fù)制

不可變性

不可變性是“Namedtuples”的基本屬性,繼承自常規(guī)元組。這意味著一旦在創(chuàng)建過程中設(shè)置了字段的值,就無法修改。

try:
????employee1.name?=?'David'
except?AttributeError?as?e:
????print(f"AttributeError:?{e}")?#?AttributeError:?can't?set?attribute

登錄后復(fù)制

方法

“Namedtuple”不僅提供了一種干凈且可讀的方法來構(gòu)建數(shù)據(jù),而且還提供了一些有用的方法,這些方法增強(qiáng)了“Namedtuple”的功能。

a) _asdict():_asdict()?方法以字典形式返回命名元組,提供了一種將“Namedtuples”轉(zhuǎn)換為與其他數(shù)據(jù)結(jié)構(gòu)兼容的格式的便捷方法。

employee1._asdict()?#?{'id':?10,?'name':?'John?Doe',?'location':?'Atlanta'}

登錄后復(fù)制

b) _replace():_replace()?方法創(chuàng)建“Namedtuple”的新實(shí)例,其中指定的字段替換為新值。這種方法對(duì)于在允許修改的同時(shí)保持不可變性至關(guān)重要。

employee1_modified?=?employee1._replace(location='DFW')
employee1_modified?#?Employee(id=10,?name='John?Doe',?location='DFW')

登錄后復(fù)制

c) _make():_make(iterable) 方法從可迭代對(duì)象創(chuàng)建“namedtuple”的新實(shí)例。例如,我們可以使用 _make() 方法從列表中創(chuàng)建一個(gè) Namedtuple。

employee_list?=?[21,?'Bob','Gallup']
Employee._make(employee_list)?#?Employee(id=21,?name='Bob',?location='Gallup')

登錄后復(fù)制

解壓縮 Namedtuple

通過解包過程,Python 的“Namedtuples”使您能夠在單個(gè)簡(jiǎn)潔的語句中將它們的值分配給各個(gè)變量。

id,?name,?location?=?employee1
print(f"id:?{id},?name:?{name},?location:{location}")

登錄后復(fù)制

將“Namedtuples”轉(zhuǎn)換為不同的數(shù)據(jù)結(jié)構(gòu)

您可以使用 list() 構(gòu)造函數(shù)將命名元組轉(zhuǎn)換為列表。下面是一個(gè)示例:

list(employee1)?#?[10,?'John?Doe',?'Atlanta']

登錄后復(fù)制

您可以使用“_asdict()”方法將命名元組轉(zhuǎn)換為字典,該方法返回一個(gè) OrderedDict,您可以將其轉(zhuǎn)換為常規(guī)字典。下面是一個(gè)示例:

dict(employee1._asdict())?#?{'id':?10,?'name':?'John?Doe',?'location':?'Atlanta'}

登錄后復(fù)制

使用“Namedtuple”的優(yōu)點(diǎn)

可讀性:“Namedtuples”通過為元素提供有意義的名稱,使代碼更具可讀性,從而消除了基于索引的訪問的需要。

變:與常規(guī)元組一樣,“Namedtuples”是不可變的。一旦創(chuàng)建,其值就無法更改。

內(nèi)存效率:“Namedtuples”具有內(nèi)存效率,與等效類相比,占用的空間更少。請(qǐng)務(wù)必注意,使用 Namedtuples 獲得的內(nèi)存效率在涉及大量實(shí)例的方案或處理大型數(shù)據(jù)集時(shí)更為常見。

輕量級(jí)數(shù)據(jù)結(jié)構(gòu):?非常適合創(chuàng)建簡(jiǎn)單的類,而無需自定義方法。

數(shù)據(jù)存儲(chǔ):?便于存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),尤其是在不需要完整類的情況下。

API 和數(shù)據(jù)庫記錄:?用于表示從數(shù)據(jù)庫返回的記錄或從 API 接收的數(shù)據(jù)。

Python 中的“Namedtuple”非常適合需要具有命名字段的簡(jiǎn)單、不可變數(shù)據(jù)結(jié)構(gòu)的場(chǎng)景,例如

配置設(shè)置:使用“Namedtuple”表示帶有命名字段的配置設(shè)置,以便清晰易用。

數(shù)據(jù)庫記錄:“Namedtuple”可以表示數(shù)據(jù)庫記錄,明確哪個(gè)字段對(duì)應(yīng)于表中的哪一列。

命令行解析:使用“Namedtuple”存儲(chǔ)解析的命令行參數(shù),為輸入?yún)?shù)提供清晰的結(jié)構(gòu)。

命名常量:“Namedtuple”可用于表示代碼中的命名常量,從而提供一種清晰易讀的方式來定義常量值。

“Namedtuples”通過提供清晰度、可讀性和不可變性在這些場(chǎng)景中表現(xiàn)出色,使其成為簡(jiǎn)明結(jié)構(gòu)化數(shù)據(jù)的寶貴工具。

分享到:
標(biāo)簽:Python
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定