Python 資料型別 - 元組

Jinku Hu 2023年1月30日 2018年3月8日
  1. Python 元組相對於列表的優點
  2. 建立一個元組
  3. 訪問元組元素
  4. Python 元組方法
  5. 適用於元組的內建函式
  6. Python 元組成員檢查
  7. Python 元組遍歷
Python 資料型別 - 元組

在本節中,我們將介紹如何建立和使用另外一種 Python 資料型別-元組。Python 元組類似於 Python 列表,不同之處在於元組是不可變的,但列表是可變的。

Python 元組相對於列表的優點

  1. 元素資料型別不同時主要使用元組,而當元素具有相同的資料型別時使用列表。
  2. 通過元組遍歷更快,因為你無法更新元組。
  3. 你可以使用元組的不可變元素作為 Python 字典中的一個鍵值。列表不能作為 Python 字典中的一個鍵值。
  4. 元組保證了對資料的保護,因為它們是不可變的。

建立一個元組

你可以使用括號 () 定義 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
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn