做者:Michael Galarnykbash
翻譯:老齊微信
譯者注: 本文適合初學者閱讀。推薦與本文內容有關的數據:《Python大學實用教程》、《跟老齊學Python:輕鬆入門》(均爲電子工業出版社出版)函數
元組是序列,就像列表同樣。元組和列表的主要區別在於元組中的不能更改(即元組不可變),而列表能夠更改(可變)。性能
建立空元組有兩種方法,能夠經過使用不包含任何值的()來建立一個空元組。ui
# 方法1
emptyTuple = ()
複製代碼
還可使用tuple函數建立一個空元組。spa
# 方法2
emptyTuple = tuple()
複製代碼
帶有元素的元組能夠經過用逗號分隔的序列來建立。翻譯
# 方法1
z = (3, 7, 4, 2)
# 方法2 (也能夠不用圓括號建立元組)
z = 3, 7, 4, 2
複製代碼
請務必記住,若是要建立只包含一個值的元組,則須要在元素的後面使用逗號。3d
# 只有一個值的元組
tup1 = ('Michael',)
# 只有一個值的元組
tup2 = 'Michael',
# 這是字符串,不是元組
notTuple = ('Michael')
複製代碼
元組中的每一個值都有一個指定的索引值。須要注意的是,Python是一種基於零索引的語言,這意味着元組中的第一個值的索引是0。code
# 建立一個元組
z = (3, 7, 4, 2)
# 根據索引0獲得第一個元素
print(z[0])
複製代碼
Python還支持負索引。負索引從元組的末尾開始,有時使用負索引來獲取元組中的最後一項會更方便,由於你沒必要知道元組的長度就能夠訪問最後一項。orm
# 打印元組的最後一項
print(z[-1])
複製代碼
提示一下,你還可使用正索引訪問相同的項(以下所示)。
切片操做返回包含請求項的新元組,從而獲得元組中元素的子集。對於下面的示例代碼,它將返回一個元組,其中包含從索引0到索引2(不包括索引2)的項。
# 建立元組
z = (3, 7, 4, 2)
# 切片包含冒號前面的第一索引,不包含冒號後面的索引
print(z[0:2])
複製代碼
# 從第一個開始,但不包含索引3項
print(z[:3])
複製代碼
你甚至能夠製做索引爲負的切片。
print(z[-4:-1])
複製代碼
元組是不可變的,這意味着在建立元組以後,沒法更新元組中的某個元素。正以下面的代碼所示,你不能更新或更改元組項的值(這不一樣於Python列表,由於Python列表是可變的)。
z = (3, 7, 4, 2)
z[1] = "fish"
複製代碼
即便元組是不可變的,也能夠採用現有元組的一部分來建立新元組,以下面的示例所示。
# 建立元組
tup1 = ('Python', 'SQL')
# 建立另一個元組
tup2 = ('R',)
# 在已有元組基礎上建立一個新元組
new_tuple = tup1 + tup2;
print(new_tuple)
複製代碼
在開始本節以前,先建立一個元組。
# 建立元組
animals = ('lama', 'sheep', 'lama', 48)
複製代碼
index
方法返回在元組中查詢到的第一個值的索引。
print(animals.index('lama'))
複製代碼
count
方法返回一個值在元組中出現的次數。
print(animals.count('lama'))
複製代碼
可使用for循環遍歷元組的項。
for item in ('lama', 'sheep', 'lama', 48):
print(item)
複製代碼
元組對於序列解包頗有用。
x, y = (7, 10);
print("Value of x is {}, the value of y is {}.".format(x, y))
複製代碼
枚舉函數返回一個元組,該元組包含每次迭代的計數(從開始時默認爲0)和在序列上迭代得到的值:
friends = ('Steve', 'Rachel', 'Michael', 'Monica')
for index, friend in enumerate(friends):
print(index,friend)
複製代碼
下面的視頻內容很詳細地介紹了元組和列表的區別,請觀看:
(視頻課程)
列表和元組是按序列存儲值的內置Python數據類型。元組是不可變的,而列表是可變的。與列表相比,元組還有其餘一些優勢(部分來自堆棧溢出)
timeit
能夠測量性能差別,該模塊容許你對Python代碼計時。下面的代碼爲每種方法執行100萬次,並輸出以秒爲單位的總時間。import timeit
print(timeit.timeit('x=(1,2,3,4,5,6,7,8,9,10,11,12)', number=1000000))
print(timeit.timeit('x=[1,2,3,4,5,6,7,8,9,10,11,12]', number=1000000))
複製代碼
關注微信公衆號:老齊教室。讀深度文章,得精湛技藝,享絢麗人生。