欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python教程命名元組示例分析

 更新時間:2021年09月29日 09:16:32   作者:沉沉沉小姐  
這篇文章是python教程篇,主要為大家介紹了Python中命名元組的示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

實際上 collections.namedtuple() 是一個工廠方法,它返回的是python中標準元組類型的子類。我們提供給它一個類型名稱以及相應的字段,它就返回一個可實例化的類為你已經(jīng)定義好的字段傳入值等。

from collections import namedtuple
Subscriber = namedtuble('Subscriber', ['addr', 'joined'])
sub = Subscriber('jonesy@example.com', '2012-10-19')
print(sub)
# Subscriber(addr='jonesy@example.com', joined='2012-10-19') 
print(sub.addr)
# 'jonesy@example.com'
print(sub.joined)
# '2012-10-19'

盡管namedtuple的實例看起來像一個普通的類實例,但它的實例與普通的元組是可互換的,而且支持所有普通元組所支持的操作。例如:索引和分解

print(len(sub))
# 2
addr, joined = sub
print(addr)
# 'jonesy@example.com' 
print(joined)
# '2012-10-19'

命名元組的主要作用在于將代碼同它所控制的元素位置間解耦。所以,如果從數(shù)據(jù)庫調(diào)用中得到一個大型的元組列表,而且通過元素的位置來訪問數(shù)據(jù),那么假如在表單中新增了一列數(shù)據(jù),那么代碼就會崩潰。但如果首先將返回的元組轉(zhuǎn)型為命名元組,就不會出現(xiàn)問題。

from collections import namedtuple
 
Stock = namedtuple('Stock', ['name', 'shares', 'price'])
def compute_cost(records):
    total = 0.0
    for rec in records:
        s = Stock(*rec)
        total += s.shares * s.price
        # 若此處為 total += s[1] * s.[2] 則數(shù)據(jù)一變,代碼也不對
    return total

注意:namedtuple 是不可變的 (immutable)

s = Stock('ACEM', 100, 123.45)
print(s)
# Stock(name='ACME', share=100, price=123.45)
s.share = 75
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# AttributeError: can't set attribute

如果需要修改任何屬性,可以通過使用 namedtuple 實例的 _replace() 方法來實現(xiàn),該方法創(chuàng)建了一個全新的命名元組,并對相應的值做替換。

s = s._replace(share=75)
print(s)
# Stock(name='ACME', share=75, price=123.45)

_replace() 方法有一個微妙的用途,那就是它可以作為一種簡便的方法填充具有可選或缺失字段的命名元組。要做到這點,首先創(chuàng)建一個包含默認值的“原型”元組,然后使用 _replace() 方法創(chuàng)建一個新的實例,把相應的值替換掉

from collection import namedtuple
Stock = namedtuple('Stock', ['name', 'share', 'price', 'data', 'time'])
# Create a prototype instance
stock_prototype = Stock('', 0, 0.0, None, NOne) 
# Function to convert a dictionary to a Stock
def dict_to_stock(s):
    return stock_prototype.replace(**s)

讓我們來演示一下上面的代碼是如何工作的:

>>> a = {'name': 'ACME', 'shares': 100, 'price': 123.45}
>>> dict_to_stock(a)
Stock(name='ACME', shares=100, price=123.45, date=None, time=None)
>>> b = {'name': 'ACME', 'shares': 100, 'price': 123.45, 'date': '12/17/2012'}
>>> dict_to_stock(b)
Stock(name='ACME', shares=100, price=123.45, date='12/17/2012', time=None)

如果我們的目標是定義一個高效的數(shù)據(jù)結(jié)構(gòu),而且將來會修改各種實例屬性,那么使用 namedtuple 并不是最佳選擇

以上就是python教程命名元組示例分析的詳細內(nèi)容,更多關于python命名元組的資料請關注腳本之家其它相關文章!

相關文章

  • python opencv實現(xiàn)圖片旋轉(zhuǎn)矩形分割

    python opencv實現(xiàn)圖片旋轉(zhuǎn)矩形分割

    這篇文章主要為大家詳細介紹了python opencv實現(xiàn)圖片旋轉(zhuǎn)矩形分割,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python檢查和同步本地時間(北京時間)的實現(xiàn)方法

    Python檢查和同步本地時間(北京時間)的實現(xiàn)方法

    這篇文章主要介紹了Python檢查和同步本地時間(北京時間)的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 詳解Django緩存處理中Vary頭部的使用

    詳解Django緩存處理中Vary頭部的使用

    這篇文章主要介紹了詳解Django緩存處理中Vary頭部的使用,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • Python實現(xiàn)清理重復文件功能的示例代碼

    Python實現(xiàn)清理重復文件功能的示例代碼

    在電腦上或多或少的存在一些重復文件,體積小的倒沒什么,如果體積大的就很占內(nèi)存了。本文用python制作了一個刪除重復文件的小工具,核心代碼很簡單,希望對你有所幫助
    2022-07-07
  • Pytorch平均池化nn.AvgPool2d()使用方法實例

    Pytorch平均池化nn.AvgPool2d()使用方法實例

    平均池化層,又叫平均匯聚層,下面這篇文章主要給大家介紹了關于Pytorch平均池化nn.AvgPool2d()使用方法的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Python?列表操作全面教程示例

    Python?列表操作全面教程示例

    這篇文章主要為大家介紹了Python?列表操作的全面教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Python CSV文件模塊的使用案例分析

    Python CSV文件模塊的使用案例分析

    這篇文章主要介紹了Python CSV文件模塊的使用,結(jié)合具體案例形式分析了Python使用csv模塊操作csv文件的相關使用技巧與相關注意事項,需要的朋友可以參考下
    2019-12-12
  • Jupyter Notebook 基本操作快捷鍵方式

    Jupyter Notebook 基本操作快捷鍵方式

    這篇文章主要介紹了Jupyter Notebook 基本操作快捷鍵方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python中的常用函數(shù)使用及說明

    Python中的常用函數(shù)使用及說明

    這篇文章主要介紹了Python中的常用函數(shù)使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 使用Cython提升Python性能的方法步驟

    使用Cython提升Python性能的方法步驟

    Cython是Python的一種擴展,允許Python代碼調(diào)用C庫,本文主要介紹了使用Cython提升Python的性能的方法步驟,具有一定的參考價值,感興趣的可以了解一下
    2023-05-05

最新評論