15.1 創建元組的複本
好的,我們已經知道元組 (tuples) 是不可變的元素序列。 因為它們不可變,所以創建元組的複製似乎是一個不那麼重要的 任務,畢竟與列表不同,元組在創建後不會更改。
然而在某些情況下,可能需要創建元組的副本, 特別是當你需要處理其單獨版本而不更改原始數據時。 以下是一些主要的方法:
直接賦值
最簡單的元組複製方法是使用直接賦值。這將創建一個新的元組對象, 但由於元組是不可變的,兩個對象將引用相同的數據。
original_tuple = (1, 2, 3, 4, 5)
copied_tuple = original_tuple
print(copied_tuple)
在這種情況下,copied_tuple 將引用與 original_tuple 相同的對象。
使用 tuple() 函數
另一種創建元組副本的方法是使用內置函數 tuple()。 這個函數通過複製原始元組的元素來創建新的元組。
original_tuple = (1, 2, 3, 4, 5)
copied_tuple = tuple(original_tuple)
print(copied_tuple)
當你想確保創建一個新的對象,即使原始對象可能是其他可迭代對象時,這種方法特別有用。
通過列表轉換
有時可能需要創建一個可變的元組副本作為列表,以便進行更改,然後再將其轉換回元組。
original_tuple = (1, 2, 3, 4, 5)
temp_list = list(original_tuple)
temp_list.append(6)
copied_tuple = tuple(temp_list)
print(copied_tuple)
在這個例子中,我們首先將元組轉換為列表,添加新的元素,然後再將列表轉換回元組。
15.2 合併元組
不同於列表,元組在創建後無法更改,但你可以通過合併現有的元組來創建新的元組。 合併元組是一個常見的操作,在不同的編程場景中都很有用。
合併元組的主要方法
連接
最簡單的合併兩個或多個元組的方法是使用 運算符 +。 這個方法創建一個新的元組,這是原始元組連接的結果。
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined_tuple = tuple1 + tuple2
print(combined_tuple)
在這個例子中,combined_tuple 會包含 (1, 2, 3, 4, 5, 6)。
乘以整數
你還可以使用運算符 * 將元組乘以整數。 這會重複元組指定次數,並創建新的元組。
tuple1 = (1, 2, 3)
multiplied_tuple = tuple1 * 3
print(multiplied_tuple)
這裡 multiplied_tuple 將會包含 (1, 2, 3, 1, 2, 3, 1, 2, 3)。
函數 itertools.chain
為了合併大量元組,可以使用模塊 itertools 中的 chain 函數。 當合併的元組數量未知時,這個方法很方便。
from itertools import chain
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
tuple3 = (7, 8, 9)
combined_tuple = tuple(chain(tuple1, tuple2, tuple3))
print(combined_tuple)
結果會是 (1, 2, 3, 4, 5, 6, 7, 8, 9)。
15.3 嵌套元組
包含其他元組的元組被稱為 嵌套元組 (nested tuples)。 嵌套元組提供了一種便利的方法來組織和結構化數據, 特別是在需要表示多維數據或複雜結構時。
你可以創建嵌套結構來合併元組。這在將數據組織成多維結構時很有用。 在 Python 中創建嵌套元組就如同創建普通元組一樣簡單。 你只是將一個元組包括在另一個元組中。
nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
在這個例子中,nested_tuple 包含三個元組,每個元組由三個元素組成。
從普通元組創建嵌套元組的示例:
在這個例子中,nested_tuple 包含三個元組,每個元組由三個元素組成。
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
nested_tuple = (tuple1, tuple2)
print(nested_tuple)
這裡 nested_tuple 將包含 ((1, 2, 3), (4, 5, 6))。
訪問嵌套元組的元素
訪問嵌套元組的元素是通過多重索引完成的。 你首先指定外部元組的索引,然後指定內部元組的索引。
nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))
# 訪問第二個嵌套元組中的元素 5
element = nested_tuple[1][1]
print(element) # 輸出: 5
多維數組
嵌套元組經常用於表示二維或多維數組。 例如,一個數據表可以表示為元組的元組,其中每一行都是獨立的元組。
數據結構化
嵌套元組對於結構化數據很有用,例如多個位置的地理坐標(緯度和經度):
locations = (("New York", (40.7128, -74.0060)),
("Los Angeles", (34.0522, -118.2437)),
("Chicago", (41.8781, -87.6298)))
GO TO FULL VERSION