10.1 元組及其特性
元組是Python中四種內建集合類型之一。
你可能已經知道,Python有幾種內建數據類型可以用來存儲一組對象。這些類型包括list
— 列表、tuple
— 元組、set
— 集合、dictionary
— 字典。今天我們將探討第二個,也是其中最簡單的一個 — 元組。
元組 (tuple)
可以存儲多個元素。每個元素都有自己的索引號,使得元組是有序的——ordered。這點上它和列表很像。
元組是不可改變的——一旦創建,它將保持不變,這使得它非常適合存儲不應在程序中更改的數據。因此,它的第二個特點是不可變(immutable)。
至於重複元素 — 在元組中可以多次存儲相同的元素 — allow duplicates。這又使得它和列表十分相似。
小提示。可以把元組想像成一個不可變的列表,它用圓括號 ()
而非方括號 []
。
10.2 創建元組
元組是不可變的元素序列,可以通過多種方式創建。以下是其中一些最常見的方法:
直接宣告:
可以通過圓括號 () 和逗號分隔元素來直接創建元組。
tuple1 = (1, 2, 3)
tuple2 = ("apple", "banana", "cherry", "apple", "cherry")
tuple3 = (1, "apple", True)
不使用括號:
Python允許你在不使用括號的情況下創建元組,只需用逗號分隔元素即可。
tuple1 = 1, 2, 3
tuple2 = "apple", "banana", "cherry", "apple", "cherry"
tuple3 = 1, "apple", True
單元素元組:
若要創建只有一個元素的元組,需要在該元素後面加上逗號
。
tuple1 = (1,)
tuple2 = ("apple",)
tuple3 = (True,)
使用 tuple()
:
函數 tuple()
可以將可迭代對象轉換為元組。這可以是列表、字符串或任何其他可迭代對象。
list_to_tuple = tuple([1, 2, 3])
10.3 元組元素的拆包
處理元組時,可以將多個元素打包成一個元組,或者將元組拆包成多個變量,這可以簡化代碼:
基本拆包
元組拆包為變量的示例:
my_tuple = (1, 2, 3)
x, y, z = my_tuple
此處變量 x
、y
和 z
分別得到值 1
、2
和 3
。
擴展拆包
Python還支持擴展拆包,允許使用符號 * 將元組的部分內容提取到列表中:
a, *b, c = (1, 2, 3, 4, 5) # a = 1, b = [2, 3, 4], c = 5
在此示例中,a
和 c
獲得第一和最後的值,而 b
則成為包含其他所有值的列表。
在函數中的應用
元組拆包在函數參數傳遞時經常用到。這對於函數接受可變數量的參數或預先將參數打包到元組或列表中特別有用:
def func(a, b, c):
print(a, b, c)
values = (1, 2, 3)
func(*values)
使用特點
元組拆包要求元組中的元素數量必須精確與分配的變量數量匹配,否則會產生錯誤。但是,使用*
來收集多餘的元素可以避免此錯誤,使代碼能更靈活地處理數據變化。
10.4 方法列表
元組是不可變的對象,因此它們幾乎沒有自己的方法。只有兩個呢 😊
函數 count(x)
:
返回 x
在元組中出現的次數。這對於計算特定元素的數量很有幫助。
t = (1, 2, 3, 2, 4, 2)
print(t.count(2)) # 輸出 3
函數 index(x)
:
返回元素 x
在元組中首次出現的索引。如果未找到元素,則出現 ValueError
異常。
t = (1, 2, 3, 2, 4, 2)
print(t.index(3)) # 輸出 2
雖然這是元組類的所有方法,但這並不意味着對其不能做其他操作。可以的,只是會稍微複雜一點。
GO TO FULL VERSION