12.1 索引範圍
取得子元組的程式碼看起來就像取得子清單一樣。 這方面元組跟它們非常相似。不想重複內容, 不過溫故而知新嘛…
取得子元組,或者slicing,可以提取元組的部分來創建新的元組。 當你需要處理存放在元組中的特定數據段時,這個過程特別有用。
slicing語法
可以使用方括號來創建slicing,裡面用冒號分隔開始和結束索引。 如果沒有指定開始索引,slicing從第一個元素開始;如果沒有指定結束索引,slicing一直到元組的末尾。
可以使用 tuple[start:stop:step]語法來獲得元組的slicing,其中:
-
start
— 開始的元素索引(包含); -
stop
— 結束的元素索引(不包括); -
step
— 選擇元素的步驟。
範例:
my_tuple = (0, 1, 2, 3, 4, 5)
sub_tuple = my_tuple[1:4] # 取得索引從1到3的子元組
print(sub_tuple) # 輸出 (1, 2, 3)
sub_tuple_with_step = my_tuple[0:6:2] # 取得從0到5的每隔一個的元素
print(sub_tuple_with_step) # 輸出 (0, 2, 4)
如果start
未指定,默認為0;如果stop
未指定,默認為len(tuple)
。參數step
默認為1。
範例:
# 創建具有從0到5的元素的元組
my_tuple = (0, 1, 2, 3, 4, 5)
# 創建從原始元組的第二個元素開始的新元組
sub_tuple = my_tuple[1:]
print(sub_tuple) # 輸出: (1, 2, 3, 4, 5)
# 創建新元組,從頭到原始元組的第四個元素
# (索引4),步驟為1(默認)
sub_tuple_with_step = my_tuple[:5]
print(sub_tuple_with_step) # 輸出: (0, 1, 2, 3, 4)
12.2 負索引
Python中的負索引從-1開始,對應於列表(或元組)的最後一個元素。 -2會指向倒數第二個元素,依此類推。 使用負索引可以簡化從元組結尾訪問元素的操作,而不需要從頭計算它們的位置。
使用範例
我們來看看如何使用負索引來形成slicing。假設我們有一個包含這些值的元組:
my_tuple = (10, 20, 30, 40, 50, 60, 70, 80)
如果要取得包含從結尾到元組中間的部分元素,可以使用負索引。
sub_tuple = my_tuple[-3:-1]
print(sub_tuple) # 輸出 (60, 70)
因此,my_tuple[-3:-1]
會選取索引-3
(倒數第三個)到-1
(不包括最後一個)的元素,會得到元組(60, 70)。
獲得元組的最後一個元素:
my_tuple = (10, 20, 30, 40, 50)
last_element = my_tuple[-1]
print(last_element) # 輸出 50
在這裡,my_tuple[-1]
總會返回元組的最後一個元素,當你不知道元組中精確的元素數量時,這非常方便。
反轉元組中的元素:
my_tuple = (10, 20, 30, 40, 50)
reversed_tuple = my_tuple[::-1]
print(reversed_tuple) # 輸出 (50, 40, 30, 20, 10)
使用slicing [::-1] 可以輕鬆有效地翻轉元組中元素的順序,獲得一個新元組,其中的元素是反轉的。
12.3 元組中是否有元素
檢查元組中是否有某個元素是標準操作,讓你知道某個元素是否在元組中。 可以使用運算子in
,當元素在元組中時返回True,否則返回False。
使用運算子in
運算子in
是檢查元素是否存在的簡單而直觀的方法:
my_tuple = (1, 2, 3, 4, 5)
element = 3
if element in my_tuple:
print(f"{element} is in the tuple.")
else:
print(f"{element} is not in the tuple.")
檢查元素不存在:
如果你想確認元組中不存在某個元素,只需使用not in
結構:
names = ('Alice', 'Bob', 'Charlie')
search_name = 'Alice'
if search_name not in names:
print(f"{search_name} 不在元組中.")
else:
print(f"{search_name} 在元組中.")
幾乎和處理清單一樣——這就是Python的通用性和簡單性所在。
GO TO FULL VERSION