Python 有兩種序列結構,分別是元組 ( tuple ) 和串列 ( list ),兩種序列都可以將任何一種物件作為它們的元素,這篇教學將會介紹 tuple 的用法與限制 ( tuple 的發音可以唸成 too-pull 也可唸成 tub-pull,中文稱為元組或數組 )。
原文參考:元組 ( 數組 ) tuple
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
tuple 和串列非常的類似,都是一個儲存資料的「容器」,可以將物件存入,變成有順序的序列結構,不過 tuple 和串列有以下幾點不同:
- tuple「只要建立了,就不能修改內容」。
- tuple 使用「小括號」,串列 list 使用「方括號」。
- 如果 tuple 裡只有一個元素,後方必須加上「逗號」( 多個元素就不用 )。
雖然 tuple 在使用上有不少限制,但 tuple 也是有一些好處:
- 讀取速度比串列快。
- 佔用的空間比較少。
- 資料更安全 ( 因為無法修改 )。
建立 tuple 有兩種方法:「使用小括號和逗號」和「使用 tuple()」。
使用小括號和逗號
透過小括號包覆內容,用逗號將內容隔開,就可以建立一個基本的 tuple,下方的例子,可以看到 a 和 b 的型別都是 tuple ( 注意,因為 b 只有一個元素,所以元素後方要加上逗號 )。
a = ('apple','banana','orange','grap')
b = ('apple',)
type(a) # tuple
type(b) # tuple
使用 tuple()
使用「tuple(串列)
」可以將串列轉換成 tuple。
a = ['apple','banana','orange','grap']
b = tuple(a)
type(b) # tuple
讀取 tuple 的內容有兩種方法:「使用變數」、「索引值 offset」。
使用變數
因為 tuple 可以一次賦予多個變數內容,透過這個方法可以一次將項目丟給不同的變數,接著只要讀取變數,就能讀取對應內容 ( 注意,使用這個方法時,變數的數量要等於 tuple 的內容數量 )。
t = ('apple','banana','orange','grap')
a, b, c, d = t
print(a) # apple
print(b) # banana
print(c) # orange
print(d) # grap
索引值 offset
在 tuple 裡每個項目都有自己的索引值 offset,指定 offset 就能讀取該資料的內容。
t = ('apple','banana','orange','grap')
print(t[0]) # apple
print(t[1]) # banana
print(t[2]) # orange
print(t[3]) # grap
類似字串的結合方式,使用 + 號,可以將不同的 tuple 合併。
t1 = ('apple','banana','orange')
t2 = ('grap','pineapple')
t = t1 + t2
print(t) # ('apple', 'banana', 'orange', 'grap', 'pineapple')
使用*號,可以將重複一個 tuple 內的所有項目,並產生一個新的 tuple。
a = ('apple','banana','orange')
b = a*3
print(b) # ('apple', 'banana', 'orange', 'apple', 'banana', 'orange', 'apple', 'banana', 'orange')
使用串列 list 存取 tuple 資料,修改資料後,再轉換為新的 tuple ( 注意,雖然變數名稱相同,但兩個 tuple 是完全不同的 )。
a = ('apple','banana','orange')
b = list(a)
b.append('grap')
a = tuple(b)
print(a) # ('apple', 'banana', 'orange', 'grap')
大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我有個超過一千篇教學的 STEAM 教育學習網,有興趣可以參考下方連結呦~ ^_^