元組
創(chuàng)建元組
- 元組和列表類似醇滥,但屬于不可變序列黎比,元組一旦創(chuàng)建超营,用任何方法都不可以修改其元素鸳玩。
- 元組的定義方式和列表相同,但定義時(shí)所有元素是放在一對(duì)圓括號(hào)“()”中演闭,而不是方括號(hào)中不跟。
- 元組沒有列表中那么多方法可以使用,因?yàn)椴豢勺兠着觯园踩迅铮俣缺攘斜砜臁?/li>
# 使用 tuple() 創(chuàng)建元組
>>>tuple()
()
# 使用 () 創(chuàng)建元組
>>> ()
()
>>> type(())
tuple
>>> type(tuple())
tuple
元組中只包含一個(gè)元素時(shí),需要在元素后面添加逗號(hào)
info_tuple = (50, )
元組取值與切片
元組的取值吕座、切片與列表時(shí)一樣使用
不能對(duì)元組的元素進(jìn)行刪除虐译,但是可以刪除整個(gè)元組:
In [1]: t = tuple("01234")
In [2]: t
Out[2]: ('0', '1', '2', '3', '4')
# 直接獲取
In [3]: t[0]
Out[3]: '0'
In [4]: t[-1]
Out[4]: '4'
# 不能修改
In [5]: t[0] = 1
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-c8aeb8cd20ae> in <module>
----> 1 t[0] = 1
TypeError: 'tuple' object does not support item assignment
In [6]: t[0:5]
Out[6]: ('0', '1', '2', '3', '4')
元組常用操作
- 在
ipython
中定義一個(gè) 元組,例如:info = ()
- 輸入
info.
按下TAB
鍵吴趴,ipython
會(huì)提示 元組 能夠使用的函數(shù)如下:
info.count info.index
循環(huán)遍歷
- 取值 就是從 元組 中獲取存儲(chǔ)在指定位置的數(shù)據(jù)
- 遍歷 就是 從頭到尾 依次 從 元組 中獲取數(shù)據(jù)
# for 循環(huán)內(nèi)部使用的變量 in 元組
for item in info:
# 循環(huán)內(nèi)部針對(duì)元組元素進(jìn)行操作
print(item)
- 在
Python
中漆诽,可以使用for
循環(huán)遍歷所有非數(shù)字型類型的變量:列表、元組锣枝、字典 以及 字符串
元組和列表之間的轉(zhuǎn)換
- 使用
list
函數(shù)可以把元組轉(zhuǎn)換成列表
list(元組)
- 使用
tuple
函數(shù)可以把列表轉(zhuǎn)換成元組
tuple(列表)
元組解包
序列類型
In [7]: a, b, c = tuple('abc')
In [8]: a
Out[8]: 'a'
In [9]: b
Out[9]: 'b'
In [10]: c
Out[10]: 'c'
# 用 _ 收集不用的元組
In [15]: _, _, c = tuple('abc')
In [16]: c
Out[16]: 'c'
_
是被舍棄的變量
元組與列表的區(qū)別
- 元組一旦定義就不允許更改厢拭。
- 元組沒有
append()
、extend()
和insert()
等方法撇叁,無(wú)法向元組中添加元素供鸠。 - 元組沒有
remove()
或pop()
方法,也無(wú)法對(duì)元組元素進(jìn)行del
操作陨闹,不能從元組中刪除元素楞捂。 - 從效果上看,
tuple( )
凍結(jié)列表趋厉,而list( )
融化元組泡一。
元組的優(yōu)點(diǎn)
- 元組的速度比列表更快。如果定義了一系列常量值觅廓,而所需做的僅是對(duì)它進(jìn)行遍歷鼻忠,那么一般使用元組而不用列表。
- 元組對(duì)不需要改變的數(shù)據(jù)進(jìn)行 “寫保護(hù)” 將使得代碼更加安全杈绸。
- 元組可用作字典的“鍵”帖蔓,也可以作為集合的元素。列表永遠(yuǎn)不能當(dāng)做字典鍵使用瞳脓,也不能作為集合的元素塑娇,因?yàn)榱斜聿皇遣豢勺兊摹?/li>
元組的缺點(diǎn)
不可修改