元組和命名元組

2021-10-04 19:28:40 字數 3523 閱讀 9074

一、元組

1、元組的定義

在python中,元組由內建的tuple型別定義。

建立元組,需要將所有的元組放在圓括號( )內,以逗號分隔。

構造只有乙個元素的元組時,括號內只包含乙個元素是不夠的,需要在其後面加上乙個逗號

t=(1

)# 改變優先順序 int/str/float ; t=(

1,)# 元組型別;

元組中的元素可以有任意多個,並且可以是不同型別的(例如:數字、字串、列表等):

>>

> t =()

# 空元組

>>

>

>>

> t =

('p'

,'y'

)# 字串型別元組

>>

>

>>

> t =(1

,5.5

,'python'

)# 混合型別元組

>>

>

>>

> t =(6

,'hello',(

'p',

'y')

)# 巢狀元組

>>

>

>>

> t =1,

5.5,

'python'

# 元組可以沒有括號,稱為元組包裝

>>

> t(1

,5.5

,'python'

)>>

>

>>

> a, b, c = t # 元的多元賦值(解包)

>>

> a

1>>

> b

5.5>>

> c

'python'

加法和乘法仍然是可以;

t2 =(2

,)t2+t2 |(2

,2)t2*3|

(2,2

,2)

2、更改元組

元組是不可變的,也就是說,元組中的元素在被賦值後不能改變。

但是,如果元素本身是乙個可變資料型別(例如列表和字典),那麼其巢狀項可以被改變,但是id不發生變化

socres =(72

,88,76

,92,90

,[80,

98])print(id

(socres)

)socres[5]

[1]=

99# 可變元素內部可以改變,但是不能修改不可變元素

print(id

(socres)

)print

(socres)

140423660050256

140423660050256(72

,88,76

,92,90

,[80,

99])

3、刪除元組

如上所述,不能更改元組中的元素,這也意味著無法刪除元組中的元素。

但如果元素本身是乙個可變資料型別,那麼其巢狀項是可以被刪除的,而且使用關鍵字 del 可以刪除整個元組:

socres =(72

,88,76

,92,90

,[80,

98])# del socres[2] # 不能刪除元素

#typeerror: 'tuple' object doesn't support item deletion

del socres[5]

[1]# 可變元素的巢狀項可以被刪除

print

(socres)

#(72, 88, 76, 92, 90, [80])

del socres # 刪除整個元組

print

(socres)

# nameerror: name 'socres' is not defined

4、列表和元組之間的轉換

列表和元組之間可以相互轉換,分別使用 tuple() 和 list() 來實現

>>

> l =

['h'

,'e'

,'l'

,'l'

,'o'

]>>

> tx =

tuple

(l)# 列表轉元組

>>

> tx

('h'

,'e'

,'l'

,'l'

,'o'

)>>

>

>>

> t =

('p'

,'y'

)>>

> lx =

list

(t)# 元組轉列表

>>

> lx

['p'

,'y'

]

二、命名元組

1.顧名思義,就是帶有名字的元組,這是什麼意思呢?就是取值時不再需要通過下標索引的方式來獲取了,可以直接通過欄位名來獲取值。

定義方式:

collections.namedtuple(typename, field_names)

typename:類名稱

field_names: 元組中元素的名稱

field_names可以是空白符或逗號分隔的字段的字串,可以是字段的列表

from collections import namedtuple

# 定義namedtuple類

user = namedtuple(

"user"

,'name gender height weight'

)# 或者

# user = namedtuple("user", ['name', 'gender', 'height', 'weight'])

# 初始化namedtuple例項物件

user = user(name=

"jack"

, gender=

"female"

, height=

170, weight=

120)

user.name #'jack'

user.gender #'female'

定義 namedtuple 時,**第乙個引數就是元組的名字,**這裡很像我們自定義類中的類名,第二個引數是用空格隔開的字串(也可以是字串組成的列表),代表元組中的4個字段,相當於類中的4個屬性。

namedtuple其實是繼承 tuple 的乙個子類,它保留了 tuple 的特性,比如通過索引獲取元素,切片功能,同樣地,字段不能重新賦值。

Python命名元組 namedtuple

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

python中命名元組

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

命名元組的使用

適用場景 適合表示 只有資料 的情況,但是需要注意,這種情況是便於可讀,不允許修改的 from collections import namedtuple case namedtuple case case name params url path case1 case 測試登入 正常情況 logi...