国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何通過(guò)Python的命名元組(Namedtuple)來(lái)增強(qiáng)代碼可讀性?

Python命名元組,命名元組示例,命名元組用法

Python的collection模塊提供了一項(xiàng)特性叫做“命名元組”(Namedtuple),它是一個(gè)具有命名元素的元組,使得代碼更加表達(dá)性。就像Python中的字典一樣,命名元組允許我們使用元組的成員而不是索引來(lái)訪問(wèn)元素。

Python的命名元組(Namedtuple)

創(chuàng)建命名元組

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

from collections import namedtuple
# 定義一個(gè)名為Employee的命名元組,它具有id、name和location字段。
Employee = namedtuple('Employee', 'id name location')
# 創(chuàng)建Employee的實(shí)例
employee1 = Employee(id=10, name='John Doe', location='Atlanta')
employee2 = Employee(id=11, name='Mick', location='Dallas')

訪問(wèn)命名元組中的元素

命名元組提供了兩種訪問(wèn)元素的機(jī)制。第一種是通過(guò)屬性名來(lái)訪問(wèn)元素,第二種是使用傳統(tǒng)的數(shù)值索引。

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

也可以使用數(shù)值索引來(lái)訪問(wèn)元素。

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

不可變性

命名元組繼承了普通元組的不可變性,這是其一個(gè)基本特性。這意味著一旦在創(chuàng)建過(guò)程中設(shè)置了字段的值,就無(wú)法修改它。

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

方法

`namedtuple`不僅提供了一種清晰易讀的方式來(lái)結(jié)構(gòu)化數(shù)據(jù),還提供了一些有用的方法,這些方法增強(qiáng)了`Namedtuple`的功能。

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

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

b) `_replace()`:`_replace()`方法創(chuàng)建一個(gè)具有指定字段替換為新值的新實(shí)例的命名元組。這個(gè)方法在保持不可變性的同時(shí)允許修改非常關(guān)鍵。

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

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

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

命名元組的拆包

通過(guò)拆包過(guò)程,Python的命名元組可以使

我們能夠?qū)⑺鼈兊闹捣峙浣o單獨(dú)的變量,實(shí)現(xiàn)簡(jiǎn)潔的語(yǔ)句。

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

將命名元組轉(zhuǎn)換為不同的數(shù)據(jù)結(jié)構(gòu)

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

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

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

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

使用命名元組的優(yōu)勢(shì)

可讀性

命名元組通過(guò)為元素提供有意義的名稱來(lái)使代碼更加可讀,消除了基于索引訪問(wèn)的需求。

不可變性

和普通元組一樣,命名元組是不可變的。一旦創(chuàng)建,它們的值不能被改變。

內(nèi)存高效

相對(duì)于等價(jià)的類,命名元組在內(nèi)存上更加高效,占用更少的空間。需要注意的是,使用命名元組所獲得的內(nèi)存效率在涉及大量實(shí)例或處理大型數(shù)據(jù)集的場(chǎng)景中更為常見。

輕量級(jí)數(shù)據(jù)結(jié)構(gòu)

適用于創(chuàng)建簡(jiǎn)單類,無(wú)需自定義方法。

數(shù)據(jù)存儲(chǔ)

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

APIs和數(shù)據(jù)庫(kù)記錄

對(duì)于表示從數(shù)據(jù)庫(kù)返回的記錄或從API接收的數(shù)據(jù)非常有用。

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

  • 配置設(shè)置:使用命名元組表示配置設(shè)置,具有命名字段以提高清晰度和易訪問(wèn)性。

  • 數(shù)據(jù)庫(kù)記錄:命名元組可以表示數(shù)據(jù)庫(kù)記錄,清楚地顯示哪個(gè)字段對(duì)應(yīng)于表中的哪個(gè)列。

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

  • 命名常量:命名元組可用于表示代碼中的命名常量,以清晰而可讀的方式定義常量值。

通過(guò)提供清晰、易讀和不可變性,命名元組在這些場(chǎng)景中表現(xiàn)出色,是一種有價(jià)值的工具來(lái)簡(jiǎn)潔地結(jié)構(gòu)化數(shù)據(jù)。文章來(lái)源地址http://www.zghlxwxcb.cn/article/649.html

到此這篇關(guān)于如何通過(guò)Python的命名元組(Namedtuple)來(lái)增強(qiáng)代碼可讀性?的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/649.html

如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系站長(zhǎng)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Python 高級(jí)特性】深入 NamedTuple 命名元組

    和元組 tuple 一樣,NamedTuple 也是 不可變數(shù)據(jù)類型 ,創(chuàng)建之后就不能改變內(nèi)容。 如其名,和 tuple 的區(qū)別在于“Named”,即\\\"命名\\\"。 NamedTuple 不像數(shù)組那樣使用下標(biāo)讀寫,反而和類相似,使用 . 來(lái)讀寫。 創(chuàng)建 NamedTuple 的函數(shù)定義 參數(shù)說(shuō)明: typename :新創(chuàng)建的類的名稱。 field_

    2024年04月11日
    瀏覽(25)
  • Python中的命名元組(namedtuple)到底是什么東西?干嘛用的?

    Python中的命名元組(namedtuple)到底是什么東西?干嘛用的?

    Python中有一種特殊的元組叫做命名元組,英文名叫namedtuple。 為什么要用命名元組呢? 思考下面的問(wèn)題: 如何設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)承載一個(gè)五維的數(shù)據(jù),如一個(gè)學(xué)生的基本信息? 方法有二: 1. Python是面向?qū)ο笳Z(yǔ)言,可以使用class,定義一個(gè)學(xué)生類,將五維信息作為屬性,這是一個(gè)

    2024年02月10日
    瀏覽(23)
  • 如何使用 Python 通過(guò)代碼創(chuàng)建圖表

    簡(jiǎn)介 Diagram as Code 工具允許您創(chuàng)建基礎(chǔ)架構(gòu)的架構(gòu)圖。您可以重復(fù)使用代碼、測(cè)試、集成和自動(dòng)化繪制圖表的過(guò)程,這將使您能夠?qū)⑽臋n視為代碼,并構(gòu)建用于映射基礎(chǔ)架構(gòu)的流水線。您可以使用 diagrams 腳本與許多云提供商和自定義基礎(chǔ)架構(gòu)。 在本教程中,您將使用 Python 創(chuàng)

    2024年02月20日
    瀏覽(20)
  • 19ContraBERT:頂會(huì)ICSE23 數(shù)據(jù)增強(qiáng)+對(duì)比學(xué)習(xí)+代碼預(yù)訓(xùn)練模型,提升NLP模型性能與魯棒性:處理程序變異(變量重命名)【網(wǎng)安AIGC專題11.15】

    19ContraBERT:頂會(huì)ICSE23 數(shù)據(jù)增強(qiáng)+對(duì)比學(xué)習(xí)+代碼預(yù)訓(xùn)練模型,提升NLP模型性能與魯棒性:處理程序變異(變量重命名)【網(wǎng)安AIGC專題11.15】

    隨著大規(guī)模代碼的崛起, 無(wú)監(jiān)督學(xué)習(xí) 成為了提高代碼預(yù)訓(xùn)練模型性能的有效手段。這些預(yù)訓(xùn)練模型在廣泛的下游任務(wù)中表現(xiàn)出色,如自然語(yǔ)言處理和程序語(yǔ)言處理。例如,像CodeBERT和GraphCodeBERT這樣的模型在預(yù)訓(xùn)練階段通過(guò)大規(guī)模代碼數(shù)據(jù)學(xué)到通用的表示,并在下游任務(wù)上進(jìn)

    2024年02月05日
    瀏覽(31)
  • chatgpt賦能python:Python學(xué)習(xí)筆記:如何合并元組

    在Python中,元組是一種不可變的數(shù)據(jù)結(jié)構(gòu)。當(dāng)我們需要組合不同的元組時(shí),我們可以使用元組合并的方法來(lái)實(shí)現(xiàn)。在本文中,我們將學(xué)習(xí)如何使用Python語(yǔ)言來(lái)合并元組。 在Python語(yǔ)言中,元組是一種有序的數(shù)據(jù)類型,可以包含零個(gè)或多個(gè)任意類型的元素。和列表相似,但是元組

    2024年02月08日
    瀏覽(22)
  • 企業(yè)如何通過(guò)熔斷降級(jí)增強(qiáng)服務(wù)穩(wěn)定性和系統(tǒng)可用性?

    企業(yè)如何通過(guò)熔斷降級(jí)增強(qiáng)服務(wù)穩(wěn)定性和系統(tǒng)可用性?

    API 的調(diào)用穩(wěn)定性被視為數(shù)據(jù)服務(wù)的最重要的指標(biāo)。該指標(biāo)的影響因素是多種多樣的,「袋鼠云數(shù)據(jù)服務(wù)平臺(tái) DataAPI」不僅多次對(duì)于調(diào)用性能和穩(wěn)定性進(jìn)行壓測(cè)和調(diào)優(yōu),而且還提供了多種配置項(xiàng)優(yōu)化手段供客戶進(jìn)行自行調(diào)優(yōu)。但是當(dāng)遇到不可預(yù)期的大流量或其他突然情況時(shí)還是

    2024年02月05日
    瀏覽(30)
  • 【Python】【編程技巧】給切片命名,使代碼清晰可讀

    使用內(nèi)置的 slice 函數(shù)創(chuàng)建切片,而不是硬編碼下標(biāo),從而增強(qiáng)代碼可讀性,例如: https://python3-cookbook.readthedocs.io/zh_CN/latest/c01/p11_naming_slice.html

    2024年02月10日
    瀏覽(27)
  • Python如何對(duì)文件進(jìn)行重命名操作?

    Python如何對(duì)文件進(jìn)行重命名操作?

    目錄 一、引言 二、Python文件重命名的方法 三、注意事項(xiàng) 四、示例代碼 五、高級(jí)應(yīng)用 1、批量重命名文件 2、根據(jù)規(guī)則重命名文件 在Python中,對(duì)文件進(jìn)行重命名是一項(xiàng)常見的操作。文件重命名通常用于整理文件、改變文件類型或者根據(jù)程序的需求修改文件名。本篇文章將深入

    2024年01月25日
    瀏覽(21)
  • Python自動(dòng)人工智能訓(xùn)練數(shù)據(jù)增強(qiáng)工具 | DALI介紹(含代碼)

    Python自動(dòng)人工智能訓(xùn)練數(shù)據(jù)增強(qiáng)工具 | DALI介紹(含代碼)

    深度學(xué)習(xí)模型需要數(shù)百 GB 的數(shù)據(jù)才能很好地概括未見過(guò)的樣本。 數(shù)據(jù)擴(kuò)充有助于增加數(shù)據(jù)集中示例的可變性。 當(dāng)數(shù)據(jù)增強(qiáng)的選擇依賴于設(shè)置模型訓(xùn)練的工程師的領(lǐng)域知識(shí)、技能和直覺時(shí),傳統(tǒng)的數(shù)據(jù)增強(qiáng)方法可以追溯到統(tǒng)計(jì)學(xué)習(xí)。 出現(xiàn)了自動(dòng)增強(qiáng)以減少對(duì)手動(dòng)數(shù)據(jù)預(yù)處理的

    2024年02月07日
    瀏覽(28)
  • 基于深度學(xué)習(xí)的人臉識(shí)別與管理系統(tǒng)(UI界面增強(qiáng)版,Python代碼)

    基于深度學(xué)習(xí)的人臉識(shí)別與管理系統(tǒng)(UI界面增強(qiáng)版,Python代碼)

    摘要:人臉檢測(cè)與識(shí)別是機(jī)器視覺領(lǐng)域最熱門的研究方向之一,本文詳細(xì)介紹博主自主設(shè)計(jì)的一款基于深度學(xué)習(xí)的人臉識(shí)別與管理系統(tǒng)。博文給出人臉識(shí)別實(shí)現(xiàn)原理的同時(shí),給出 P y t h o n 的人臉識(shí)別實(shí)現(xiàn)代碼以及 P y Q t 設(shè)計(jì)的UI界面。系統(tǒng)實(shí)現(xiàn)了集識(shí)別人臉、錄入人臉、管理

    2024年01月20日
    瀏覽(75)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包