定義一個不可變的個人資料數組(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] = 30
personal_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 type
x, 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)]) # Tokyo
print(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() # 結果為()

 

 

 

 

 

 

 

 

 

 

 

 

文章標籤
全站熱搜
創作者介紹
創作者 Luke 的頭像
Luke

Luke的部落格

Luke 發表在 痞客邦 留言(0) 人氣(16)