元組是一系列不可變的Python對(duì)象。元組是一種序列,就像列表一樣。元組和列表之間的主要區(qū)別是元組不能像列表那樣改變?cè)氐闹?,可以?jiǎn)單地理解為“只讀列表”。 元組使用小括號(hào) - (),而列表使用方括號(hào) - [] 。
創(chuàng)建一個(gè)元組只需使用逗號(hào)分隔值放入小括號(hào)的一個(gè)序列。 或者,也可以將這些逗號(hào)分隔值放在括號(hào)之間。 例如 -
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5 )
tup3 = "a", "b", "c", "d"
空的元組寫(xiě)成兩個(gè)不含任何東西的小括號(hào) -
tup1 = ();
要編寫(xiě)一個(gè)包含單個(gè)值的元組,必須包含一個(gè)逗號(hào),即使只有一個(gè)值(這是規(guī)范寫(xiě)法) -
tup1 = (50,)
## 也可以這樣寫(xiě)
tup2 = (50)
要訪問(wèn)元組中的值,請(qǐng)使用方括號(hào)進(jìn)行指定索引切片或索引,以獲取該索引處的值。 例如 -
#!/usr/bin/python3
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])
當(dāng)執(zhí)行上述代碼時(shí),會(huì)產(chǎn)生以下結(jié)果 -
tup1[0]: physics
tup2[1:5]: (2, 3, 4, 5)
元組是不可變的,這意味著我們無(wú)法更新或更改元組元素的值。 但是可以使用現(xiàn)有元組的一部分來(lái)創(chuàng)建新的元組,如下例所示:
#!/usr/bin/python3
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# Following action is not valid for tuples
# tup1[0] = 100;
# So let's create a new tuple as follows
tup3 = tup1 + tup2
print (tup3)
當(dāng)執(zhí)行上述代碼時(shí),會(huì)產(chǎn)生以下結(jié)果 -
(12, 34.56, 'abc', 'xyz')
刪除單個(gè)元組元素是不可能的。 當(dāng)然,將不必要的元素放在另一個(gè)元組中也沒(méi)有什么錯(cuò)。
要顯式刪除整個(gè)元組,只需使用del語(yǔ)句。 例如 -
#!/usr/bin/python3
tup = ('physics', 'chemistry', 1997, 2000);
print (tup)
del tup;
print "After deleting tup : "
print (tup)
執(zhí)行上面代碼,將產(chǎn)生以下結(jié)果 -
注 - 引發(fā)異常。這是因?yàn)樵?code>del tup之后,元組不再存在。
('physics', 'chemistry', 1997, 2000)
After deleting tup :
Traceback (most recent call last):
File "test.py", line 9, in <module>
print tup;
NameError: name 'tup' is not defined
元組響應(yīng)+和*運(yùn)算符很像字符串; 它們執(zhí)行連接和重復(fù)操作,但結(jié)果是一個(gè)新的元組,而不是一個(gè)字符串。
事實(shí)上,元組中類(lèi)似字符串操作和使用的所有常規(guī)序列操作都有作了講解。
| Python表達(dá)式 | 結(jié)果 | 描述 |
|---|---|---|
len((1, 2, 3)) |
3 |
長(zhǎng)度 |
(1, 2, 3) + (4, 5, 6) |
(1, 2, 3, 4, 5, 6) |
連接操作 |
('Hi!',) * 4 |
('Hi!', 'Hi!', 'Hi!', 'Hi!') |
重復(fù) |
3 in (1, 2, 3) |
True |
成員關(guān)系 |
for x in (1,2,3) : print (x, end = ' ') |
1 2 3 |
迭代 |
由于元組是序列,索引和切片的工作方式與列表的工作方式相同,假設(shè)輸入以下值:
T=('C++', 'Java', 'Python')
那么 -
| Python表達(dá)式 | 結(jié)果 | |
|---|---|---|
T[2] |
'Python' |
偏移量,從零開(kāi)始 |
T[-2] |
'Java' |
負(fù)數(shù):從右到左 |
T[1:] |
('Java', 'Python') |
切片提取部分 |
Python包括以下元組函數(shù) -
| 編號(hào) | 函數(shù) | 描述 |
|---|---|---|
| 1 | cmp(tuple1, tuple2) | 比較兩個(gè)元組的元素。 |
| 2 | len(tuple) | 給出元組的總長(zhǎng)度。 |
| 3 | max(tuple) | 從元組返回最大值項(xiàng)。 |
| 4 | min(tuple) | 從元組返回最大值項(xiàng) |
| 5 | tuple(seq) | 將列表轉(zhuǎn)換為元組。 |