位置:首頁 > 腳本語言 > Python教學 > Python元組

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)
列表轉換為元組