最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python具名元組(namedtuple)的具體使用

 更新時(shí)間:2023年03月21日 11:11:35   作者:alwaysrun  
本文主要介紹了python具名元組(namedtuple)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

collections.namedtuple用于構(gòu)造帶字段名的元組。對(duì)應(yīng)類型為typing.NamedTuple(可用作超類)。

具名元組

namedtuple對(duì)象的定義:

collections.namedtuple(typename, field_names, verbose=False, rename=False, defaults=None, module=None):

  • typename:元組名稱
  • field_names:是字段序列(如,[‘x’, ‘y’]);
  • rename:為true時(shí),字段名無效時(shí)(如,重名或使用關(guān)鍵字)會(huì)被自動(dòng)替換為位置名(如,_1);
  • defaults:字段的默認(rèn)值,若為iterable對(duì)象,則依次對(duì)應(yīng)field_names中字段的缺省值;
from collections import namedtuple

Color = namedtuple("Color", "r g b alpha")

def convert_to_color(desc: str, alpha: float = 0.0):
? ? if desc == "green":
? ? ? ? return Color(r=50, g=205, b=50, alpha=alpha)
? ? elif desc == "blue":
? ? ? ? return Color(r=50, g=0, b=255, alpha=alpha)
? ? else:
? ? ? ? return Color(r=50, g=0, b=0, alpha=alpha)

從可迭代對(duì)象(Iterable)構(gòu)造具名元組:

c = Color._make([10, 20, 30, 0.1])
nc = Color._make((10, 20, 30, 0.1))

print("r:", c.r)

元組操作

具名元組修改:不能直接修改里面的值,可通過_replace構(gòu)造一個(gè)新的:

c = {"r": 50, "g": 205, "b": 50, "alpha": 0.5}
nc = c._replace(r=100)

把字典轉(zhuǎn)換為具名元組:

c = {"r": 50, "g": 205, "b": 50, "alpha": 0.5}
nc = Color(**c)

具名元組轉(zhuǎn)換為字典(通過_asdict方法):

c = Color(r=50, g=0, b=0, alpha=0.5)
d = c._asdict()

具名元組轉(zhuǎn)換為元組:

c = Color(r=50, g=0, b=0, alpha=0.5)
t = tuple(c)

屬性

  • 屬性_fields包含所有字段的元組:如('r', 'g', 'b', 'alpha');
  • 屬性__annotations__包含字段與對(duì)應(yīng)類型的字典:如{'r': <class 'float'>, 'g': <class 'float'>, 'b': <class 'float'>, 'alpha': <class 'float'>};
  • 屬性_field_defaults保證有初始值的字段與初始值的字典:如{'alpha': 0.0};

排序

具名元組排序:通過operator庫(kù)中的attrgetter可指定排序字段:

from operator import attrgetter

colors = [
? ? Color(r=50, g=205, b=50, alpha=0.1),
? ? Color(r=50, g=205, b=50, alpha=0.5),
? ? Color(r=50, g=0, b=0, alpha=0.3)
]
out = sorted(colors, key=attrgetter("alpha"))
print(out)

與字典比較

字典dict是一種非常通用的數(shù)據(jù)結(jié)構(gòu),很容易被濫用,同時(shí)相對(duì)namedtuple,有以下問題:

  • 字典是不可散列,因此無法將其存儲(chǔ)在set或其他字典中;
  • 字典是可變的,可以根據(jù)需要添加任意數(shù)量的新鍵;

與dict類似,在namedtuple中可以將值分配給單個(gè)變量并根據(jù)需要使用。但:

namedtuple是不可變的,不會(huì)意外添加新的值(鍵);

數(shù)據(jù)類

數(shù)據(jù)類詳情可參見《數(shù)據(jù)類(dataclass)簡(jiǎn)介》。

dataclass修飾

python3.7中引入了數(shù)據(jù)類(Data Class),可看做是“具有默認(rèn)值的可變namedtuple”:

  • 可方便地添加doc;
  • 可定義可選字段;
from dataclasses import dataclass

# frozen設(shè)為true后,字段內(nèi)容將不允許修改(與namedtuple完全類似)
# 否則可修改字段;并可任意添加字段(如,c.n=1);
@dataclass(frozen=True)
class DColor:
? ? """A regular class that represents a color."""
? ? r: float
? ? g: float
? ? b: float
? ? alpha: float = 0.0

# c = DColor(r=10, g=20, b=30)
c = DColor(10, 20, 30)

繼承NamedTuple

通過繼承NamedTuple也可方便定義(同時(shí)可定義字段的初始值,有初始值的字段必須在無初始字段后面):

from typing import NamedTuple

class NColor(NamedTuple):
? ? """A namedtuple that represents a color."""
? ? r: float
? ? g: float
? ? b: float
? ? alpha: float = 0.0

nc = NColor(100, 110, 120) ? ?

到此這篇關(guān)于python具名元組(namedtuple)的具體使用的文章就介紹到這了,更多相關(guān)python具名元組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python的Random庫(kù)的使用方法詳解

    Python的Random庫(kù)的使用方法詳解

    這篇文章主要介紹了Python的Random庫(kù)的使用方法詳解,random庫(kù)是使用隨機(jī)數(shù)的Python標(biāo)準(zhǔn)庫(kù),python中用于生成偽隨機(jī)數(shù)的函數(shù)庫(kù)是random,需要的朋友可以參考下
    2023-07-07
  • python操作MySQL數(shù)據(jù)庫(kù)的方法分享

    python操作MySQL數(shù)據(jù)庫(kù)的方法分享

    堅(jiān)持每天學(xué)一點(diǎn),每天積累一點(diǎn)點(diǎn),作為自己每天的業(yè)余收獲,這個(gè)文章是我在吃飯的期間寫的,利用自己零散的時(shí)間學(xué)了一下python操作MYSQL,所以整理一下
    2012-05-05
  • pytorch 數(shù)據(jù)集圖片顯示方法

    pytorch 數(shù)據(jù)集圖片顯示方法

    今天小編就為大家分享一篇pytorch 數(shù)據(jù)集圖片顯示方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python將logging模塊封裝成單獨(dú)模塊并實(shí)現(xiàn)動(dòng)態(tài)切換Level方式

    python將logging模塊封裝成單獨(dú)模塊并實(shí)現(xiàn)動(dòng)態(tài)切換Level方式

    這篇文章主要介紹了python將logging模塊封裝成單獨(dú)模塊并實(shí)現(xiàn)動(dòng)態(tài)切換Level方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python爬蟲網(wǎng)頁(yè)元素定位術(shù)

    Python爬蟲網(wǎng)頁(yè)元素定位術(shù)

    這篇文章主要介紹了Python爬蟲網(wǎng)頁(yè)元素定位術(shù),文章通過Beautiful?Soup模塊展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Python中下劃線的使用方法

    Python中下劃線的使用方法

    這篇文章主要介紹了Python中下劃線的使用方法,是為python編程學(xué)習(xí)中的基本知識(shí),需要的朋友可以參考下
    2015-03-03
  • Ubuntu16.04/樹莓派Python3+opencv配置教程(分享)

    Ubuntu16.04/樹莓派Python3+opencv配置教程(分享)

    下面小編就為大家分享一篇Ubuntu16.04/樹莓派Python3+opencv配置教程。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python模塊 _winreg操作注冊(cè)表

    Python模塊 _winreg操作注冊(cè)表

    通過python操作注冊(cè)表主要有兩種方式,一種是通過python的內(nèi)置模塊 _winreg,另一種方式就是 Win32 Extension For Python的win32api模塊,這里主要簡(jiǎn)單看看用內(nèi)置模塊 _winreg如何操作注冊(cè)表
    2020-02-02
  • 詳解Python中命令行參數(shù)argparse的常用命令

    詳解Python中命令行參數(shù)argparse的常用命令

    這篇文章主要為大家詳細(xì)介紹了Python中命令行參數(shù)argparse的一些常用命令,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以了解一下
    2023-01-01
  • Pandas告警UserWarning:pandas?only?supports?SQLAlchemy?connectable處理方式

    Pandas告警UserWarning:pandas?only?supports?SQLAlchemy?conn

    這篇文章主要給大家介紹了關(guān)于Pandas告警UserWarning:pandas only supports SQLAlchemy connectable的處理方式,文中還分享了pandas還有哪些userwarning,對(duì)大家學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-02-02

最新評(píng)論

岱山县| 建德市| 景宁| 霍林郭勒市| 闵行区| 宝鸡市| 彩票| 微山县| 蕲春县| 沂水县| 武宁县| 彭水| 大姚县| 钦州市| 扎赉特旗| 东乡族自治县| 华安县| 扶沟县| 莫力| 南溪县| 白山市| 台北县| 安岳县| 嘉善县| 阿瓦提县| 武宣县| 明星| 汕尾市| 齐齐哈尔市| 包头市| 万州区| 南和县| 林西县| 遵义市| 新乐市| 多伦县| 右玉县| 英德市| 博白县| 独山县| 民勤县|