Python命名元組 namedtuple

2021-09-10 08:06:37 字數 1566 閱讀 8847

python中提供了基礎的不可變資料結構元組tuple,對元組元素的訪問需通過索引來完成,對此需要熟記每個下標對應的具體含義。如果元素數量一多,要記清楚這些東西就會比較麻煩了,於是就出現了命名元組namedtuple。

collections.namedtuple(

"point",[

"x",

"y"]

)

這樣就建立了乙個叫做point的命名元組,它擁有兩個屬性x,y。

第二個引數[「x」,「y」]也可以寫成"x y"或者"x,y",即用空格或者逗號隔開屬性名,即:

collections.namedtuple(

"point"

,"x y"

)collections.namedtuple(

"point"

,"x,y"

)

我們可以將其賦值給乙個變數:

point = collections.namedtuple(

"point"

,"x,y"

)p = collections.namedtuple(

"point"

,"x,y"

)#變數名不一定要和第乙個引數相同

以上得到的變數point或者p並不直接是乙個元組物件,它只是乙個類,如果要建立它的例項,則需要像建立類例項一樣呼叫它:

p1 = point(x =

0, y =0)

p2 = p(x =

1, y =

1)

這樣就建立了兩個例項p1,p2,他們的內容分別是x = 0,y = 0,x = 1,y = 1。

例題:

import collections

defcreatepoint()

:#在此處建立並返回乙個命名元組例項,有屬性x,y,初值都為0

point = collections.namedtuple(

"point",[

"x",

"y"]

)return point(x =

0,y =

0)

命名元組可以通過索引訪問元素:

print

(p1[0]

)print

(p1[1]

)

得到的結果:

0

0

當然,命名元組也可以通過屬性訪問:

print

(p2.x)

print

(p2.y)

得到的結果:

1

1

如果需要修改元組的元素,則不能簡單的使用p1.x = 1,需要呼叫成員函式_replace(),它會返回乙個包含新值的新例項,比如:

p1 = p1._replace(x =1)

#將p1的x值從0換到1

python中命名元組

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

元組和命名元組

一 元組 1 元組的定義 在python中,元組由內建的tuple型別定義。建立元組,需要將所有的元組放在圓括號 內,以逗號分隔。構造只有乙個元素的元組時,括號內只包含乙個元素是不夠的,需要在其後面加上乙個逗號 t 1 改變優先順序 int str float t 1,元組型別 元組中的元素可以有任...

python中的命名元組namedtuple

namedtuple是繼承自tuple的子類。namedtuple建立乙個和tuple類似的物件,而且物件擁有可訪問的屬性 可利用collections.namedtuple構建乙個簡單的類。from collections import namedtuple 定義乙個namedtuple型別use...