定義一個不可變的個人資料數組(Tuple),包含名字、年齡和性別。嘗試修改數組中的某個值。
Tuple是一種不可變的資料結構,一旦定義後就無法更改其中的元素。以目前來看比較像是constant的用法。
Tuple初始化,並印出結果
personal_info = ("Alice", 25, "Female")print("Original Tuple", personal_info) # 結果為('Alice', 25, 'Female') |
如果想嘗試修改personal_info[1] = 30,終端機會出現TypeError: 'tuple' object does not support item assignment
personal_info[1] = 30 # 終端機出現# TypeError: 'tuple' object does not support item assignment |
若想更改tuple內容,折衷辦法只能是將屬性改成List,使用List方式修改完後,再重新定義為Tuple,例如
temp_list = list(personal_info)temp_list[1] = 30personal_info = tuple(temp_list) |
出現結果會變成('Alice', 30, 'Female'),但其實以我理解一開始就不應該用Tuple來做這類的事情,反而使用List來達成想要的目的就好
另外Tuple一樣能帶入index來得到element,另外也有特殊用法index帶入負數,例如
sample_tuple = (10, 20, 30, 40)print(len(sample_tuple))print(sample_tuple[1])# 特殊用法可以在index帶入負數print(sample_tuple[-1]) # 意即最後一個元素print(sample_tuple[-2]) # 意即倒數第二個元素 |
Tuple + slicing也是可以使用的
比如說:sample_tuple[0:3:1],可簡化為sample_tuple[:3]
print(sample_tuple[:3]) # get (10, 20, 30) |
Tuple可以使用"+"以及"*"運算符,以下為使用例子
tuple1 = (1, 2)tuple2 = (3, 4)print(tuple1 + tuple2) # (1, 2, 3, 4)print(tuple1 * 3) # (1, 2, 1, 2, 1, 2) |
Tuple最常被使用到的是function return,意即一次返回多組參數
例如
def get_coordinates(): x = 10 y = 20 return x, y # this is tuple typex, y = get_coordinates()print(x, y) # (10, 20) |
再來tuple也常被放在dictionary當成Key
在 Python 中,字典(dictionary) 是一種無序的資料結構,用於存儲由(key)和(value)組成的對。每個key對應一個value,並且每個key在字典中是唯一的。
dictionary + tuple,比如我想使用dictionary建立經緯度+城市,那麼tuple很適合當成key,由於key是唯一並且不可變的型態,tuple剛好很適合
location_map = {(35.6895, 139.6917): "Tokyo", # key = (35.6895, 139.6917), value = Tokyo(40.7128, -74.0060): "New York", # key = (40.7128, -74.0060), value = New York} |
當我在找尋dictionary內容時,我可以用key來找到我想找的內容
print(location_map)# {(35.6895, 139.6917): 'Tokyo', (40.7128, -74.006): 'New York'}print(location_map[(35.6895, 139.6917)]) # Tokyoprint(location_map[(40.7128, -74.0060)]) # New York |
dictionary也可以直接新增一個element
location_map[(51.5074, -0.1278)] = "London" |
不過這等到dictionary章節在詳細說明
另外有查到empty tuple,目前還想不到應用場景,但有查到function可能可以當成初始參數
def function(data=()): print("Data:", data)function() # 結果為() |
