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...