日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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

使用 Python 命名元組增強代碼清晰度

了解如何創建、解構和優化內存使用,以獲得更簡潔、更易讀的代碼。探索實際示例和最佳實踐。

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

創建命名元組

要創建一個命名元組,我們必須使用集合模塊中的函數“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')

登錄后復制

從 Namedtuple 訪問元素

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

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

登錄后復制

也可以使用數字索引訪問元素。

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

登錄后復制

不可變性

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

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

登錄后復制

方法

“Namedtuple”不僅提供了一種干凈且可讀的方法來構建數據,而且還提供了一些有用的方法,這些方法增強了“Namedtuple”的功能。

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

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

登錄后復制

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

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

登錄后復制

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

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

登錄后復制

解壓縮 Namedtuple

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

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

登錄后復制

將“Namedtuples”轉換為不同的數據結構

您可以使用 list() 構造函數將命名元組轉換為列表。下面是一個示例:

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

登錄后復制

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

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

登錄后復制

使用“Namedtuple”的優點

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

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

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

輕量級數據結構:?非常適合創建簡單的類,而無需自定義方法。

數據存儲:?便于存儲結構化數據,尤其是在不需要完整類的情況下。

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

Python 中的“Namedtuple”非常適合需要具有命名字段的簡單、不可變數據結構的場景,例如

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

數據庫記錄:“Namedtuple”可以表示數據庫記錄,明確哪個字段對應于表中的哪一列。

命令行解析:使用“Namedtuple”存儲解析的命令行參數,為輸入參數提供清晰的結構。

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

“Namedtuples”通過提供清晰度、可讀性和不可變性在這些場景中表現出色,使其成為簡明結構化數據的寶貴工具。

分享到:
標簽:Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定