Python 資料型別 - 元組
Jinku Hu
2023年1月30日
在本節中,我們將介紹如何建立和使用另外一種 Python 資料型別-元組。Python 元組類似於 Python 列表,不同之處在於元組是不可變的,但列表是可變的。
Python 元組相對於列表的優點
- 元素資料型別不同時主要使用元組,而當元素具有相同的資料型別時使用列表。
- 通過元組遍歷更快,因為你無法更新元組。
- 你可以使用元組的不可變元素作為 Python 字典中的一個鍵值。列表不能作為 Python 字典中的一個鍵值。
- 元組保證了對資料的保護,因為它們是不可變的。
建立一個元組
你可以使用括號 ()
定義 Python 元組,並用逗號,
來分隔元素。元組可以具有任何資料型別的元素。
>>> x = (3, 'pink', 3+8j)
>>> print('x[0] =', x[0])
x[0] = 3
>>> print('x[0:2] =', x[0:2])
x[0:2] = (3, 'pink')
>>> x[0] = 4
TypeError: 'tuple' object does not support item assignment
如果元組只包含一個元素,比如說是字串,則該元組不會被視為元組,而是將其視為字串。舉例來說明:
>>> x = ("Python")
>>> print(type(x))
<class 'str'>
你可以在這裡看到 x
的資料型別是 str
而不是 tuple
。為了使它能成為一個元組,你可以在其後面新增一個逗號。
>>> x = ("Python",)
>>> print(type(x))
<class 'tuple'>
訪問元組元素
元組的元素可以通過以下任何方式訪問:
索引
索引操作符 []
可以用來訪問元組的元素。元組的索引從 0 開始。如果索引不在範圍內(元素未在元組中的索引處定義),則會出現 IndexError
。在這裡應該指出,索引必須是一個整數,否則會出現 TypeError
>>> x = (3, 'pink', 3+8j)
>>> print(x[0])
3
>>> print(x[2])
(3+8j)
負索引 Negative Index
同 Python 列表一樣,你可以使用負索引來訪問元組元素。
>>> l = (2, 4, 6, 8, 10)
>>> print(l[-1])
10
>>> print(l[-2])
8
>>> print(l[-3])
6
切片
切片運算子:
用於從元組中提取一系列元素。
>>> l = (2, 4, 6, 8, 10)
>>> print(l[1:3]) # 列印從位置 1 到位置 3(不含 3)的元素
(4, 6)
>>> print(l[:2]) # 列印從開始到位置 2(不含 2)的元素
(2, 4)
>>> print(l[2:]) # 列印從位置 2(包含 2)開始的元素
(6, 8, 10)
>>> print(l[:]) # 列印整個列表
(2, 4, 6, 8, 10)
拼接元組
兩個元組可以同過+
操作符拼接起來。
>>> l = (2, 4, 6, 8, 10)
>>> print(l + (12, 14, 16)
(2, 4, 6, 8, 10, 12, 14, 16)
刪除元組
元組元素不可刪除,因為元組是不可變的。但是你可以使用 del
關鍵字來刪除整個元組。
l = (2, 4, 6, 8, 10)
del l
Python 元組方法
元組只有兩個方法,因為元組是不可變的資料型別:
Python 元組方法 | 描述 |
---|---|
count(a) |
範圍元組中元素 a 的數量 |
index(a) |
返回元組中第一個匹配元素 a 的索引 |
適用於元組的內建函式
以下列表中的內建函式適用於元組資料型別。
函式 | 描述 |
---|---|
all() |
當元組中的所有元素都為 True 時返回 True 。當元組為空時,它也返回 True |
any() |
當元組中的任何元素為 True 時返回 True 。當元組為空時,它返回 False |
enumerate() |
將元組的所有元素的索引和值作為元組返回。它返回一個列舉 物件 |
len() |
返回元組中元素的數量或元組的長度 |
tuple() |
將序列(元組,字串,字典)轉換為元組 |
max() |
返回元組中的最大數字 |
min() |
返回元組中的最小數字 |
sorted() |
返回一個排序元組 |
sum() |
返回元組中所有元素的總和 |
Python 元組成員檢查
Python in
關鍵字用來檢查給定元素是否是元組的成員。
>>> l = (2, 4, 6, 8, 10)
>>> print(5 in l)
False
>>> print(2 in l
True
Python 元組遍歷
你可以使用 for
迴圈來遍歷一個元組。
l = (2, 4, 6, 8, 10)
for i in l:
print(i)
2
4
6
8
10