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);
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 "F:\worksp\python\test.py", line 7, 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 疊代