Python元組
元組是不可變的Python對象序列。元組的序列就像列表。唯一的區彆是,元組不能被改變,即元組是不可被修改。元組使用小括號,而列表使用方括號。
創建一個元組很簡單,隻要把不同的逗號分隔值,可以把括號中的這些逗號來分隔每個值。例如:
tup1 = ('physics', 'chemistry', 1997, 2000); tup2 = (1, 2, 3, 4, 5 ); tup3 = "a", "b", "c", "d";
空的元組寫為含有兩對稱括號:
tup1 = ();
要元組中包含一個值,必須有一個逗號,即使隻有一個值的元組:
tup1 = (50,);
如字符串索引,元組索引從0開始,元組可以切片,聯接等。
訪問元組的值:
要訪問元組的值,使用方括號沿切片及索引或索引來獲得可用的索引對應的值。下麵是一個簡單的例子:
#!/usr/bin/python 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]
當執行上麵的代碼,產生以下結果:
tup1[0]: physics tup2[1:5]: [2, 3, 4, 5]
更新元組:
元組是不可變的,這意味著不能更新或更改元組元素的值。但可以利用現有的元組的部分來創建新的元組,如下例所示:
#!/usr/bin/python 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;
當執行上麵的代碼,產生以下結果:
(12, 34.56, 'abc', 'xyz')
刪除的元組元素:
除去各個元組的元素是不可能的。當然,一個元組與丟棄不想要的元素放在一起冇有錯。
要明確地刪除整個元組,隻要使用del語句。下麵是一個簡單的例子:
#!/usr/bin/python tup = ('physics', 'chemistry', 1997, 2000, hema); print tup; del tup; print "After deleting tup : " print tup;
這將產生以下結果。注意引發異常,這是因為經過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
元組的基本操作:
元組的 + 和 * 運算符回應就像字符串中一樣; 他們串聯和重複功能在這裡也一樣,不同的是,結果是一個新的記錄,而不是字符串。
實際上,元組響應所有我們使用在現有章字符串的一般操作順序:
Python 表達式 | 結果 | 描述 |
---|---|---|
len((1, 2, 3)) | 3 | 長度 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 串聯 |
('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | 重複 |
3 in (1, 2, 3) | True | 成員 |
for x in (1, 2, 3): print x, | 1 2 3 | 迭代 |
索引,切片和矩陣:
因為元組序列,索引和切片與字符串的工作方式相同。假設下麵輸入:
L = ('spam', 'Spam', 'SPAM!')
Python 表達式 | 結果 | 描述 |
---|---|---|
L[2] | 'SPAM!' | 偏移從0開始 |
L[-2] | 'Spam' | 負值:計數從右邊 |
L[1:] | ['Spam', 'SPAM!'] | 切取部分 |
無封閉分隔符:
任何一組多個對象,以逗號分隔,不寫識彆符號,即括號內的列表,括號中的元組等,默認為元組,在下麵這個短短的例子說明:
#!/usr/bin/python print 'abc', -4.24e93, 18+6.6j, 'xyz'; x, y = 1, 2; print "Value of x , y : ", x,y;
當執行上麵的代碼,產生以下結果:
abc -4.24e+93 (18+6.6j) xyz Value of x , y : 1 2
內置元組函數:
Python中包括以下元組的功能:
SN | 函數與說明 |
---|---|
1 |
cmp(tuple1, tuple2) 比較這兩個元組的元素 |
2 |
len(tuple) 給出元組的總長度 |
3 |
max(tuple) 從元組中返回最大值的項 |
4 |
min(tuple) 從元組返回最小值的項 |
5 |
tuple(seq) 列表轉換為元組 |