一、元組
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...