tuple
- tuple是不可新增修改,只能唯讀。
- tuple是有順序,所以可以使用索引位置讀取元素。
- tuple的元素可以重覆。
宣告
使用圓括號與逗號建立tuple。
1
2
| tuple1 = (1, 2, "Hello", ['Hi', 55.5])
print(f"tuple1: {tuple1}, type = {type(tuple1)}")
|
tuple1: (1, 2, 'Hello', ['Hi', 55.5]), type = <class 'tuple'>
元素可以為任意類型,可以為list[]、tuple、set、dict、int、string、float。
空tuple
使用圓括號 () 或 tuple(),建立空的tuple。
1
2
3
4
| tuple1 = ()
tuple2 = tuple()
print(f"tuple1: {tuple1}, type = {type(tuple1)}")
print(f"tuple2: {tuple2}, type = {type(tuple2)}")
|
tuple1: (), type = <class 'tuple'>
tuple2: (), type = <class 'tuple'>
tuple只有一個元素 後面要逗號
tuple只有一個元素,若後面不加上逗號,類型為int。
1
2
| tuple1 = (1)
print(f"tuple1: {tuple1} , type = {type(tuple1)}")
|
tuple1: 1 , type = <class 'int'>
加上逗號,類型為tuple。
1
2
| tuple1 = (1,)
print(f"tuple1: {tuple1} , type = {type(tuple1)}")
|
tuple1: (1,) , type = <class 'tuple'>
讀取元素
透過[索引]可以取得元素。
1
2
3
4
| tuple1 = (1, 2, 3)
print(f"tuple1[0]: {tuple1[0]}")
print(f"tuple1[1]: {tuple1[1]}")
print(f"tuple1[2]: {tuple1[2]}")
|
tuple1[0]: 1
tuple1[1]: 2
tuple1[2]: 3
讀取元素為負索引
-1為tuple的最後一個,-2為tuple的倒數第二個,依此類推。
1
2
3
4
| tuple1 = (1, 2, 3)
print(f"tuple1[-1]: {tuple1[-1]}")
print(f"tuple1[-2]: {tuple1[-2]}")
print(f"tuple1[-3]: {tuple1[-3]}")
|
tuple1[-1]: 3
tuple1[-2]: 2
tuple1[-3]: 1
讀取元素為list
1
2
3
4
| tuple1 = (1, 2, ["H", 'E', "LL"])
print(f"tuple1[2][0] = {tuple1[2][0]}")
print(f"tuple1[2][1] = {tuple1[2][1]}")
print(f"tuple1[2][2] = {tuple1[2][2]}")
|
tuple1[2][0] = H
tuple1[2][1] = E
tuple1[2][2] = LL
讀取元素為tuple
1
2
3
4
| tuple1 = (1, 2, ("H", 'E', "LL"))
print(f"tuple1[2][0] = {tuple1[2][0]}")
print(f"tuple1[2][1] = {tuple1[2][1]}")
print(f"tuple1[2][2] = {tuple1[2][2]}")
|
tuple1[2][0] = H
tuple1[2][1] = E
tuple1[2][2] = LL
讀取元素為dict
注意!dict是要用key來讀取,而不是索引,dict不支持索引功能。
1
2
3
| tuple1 = (1, 2, {"s01":"Mary", "s02": "Bill"})
print(f"tuple1[2][key] = {tuple1[2]["s01"]}")
print(f"tuple1[2][key] = {tuple1[2]["s02"]}")
|
tuple1[2][key] = Mary
tuple1[2][key] = Bill
讀取元素為set
因為set不是順序,所以無法使用索引讀取。
迴圈遍歷
for
1
2
3
| tuple1 = (1, 2, 3)
for elem in tuple1:
print(elem)
|
while
因為tuple是有順序,可以使用while 順序透過索引位置讀取每個元素。
1
2
3
4
5
| tuple1 = (1, 2, 3)
i = 0
while i < len(tuple1):
print(f"tuple[{i}] = {tuple1[i]}")
i += 1
|
tuple[0] = 1
tuple[1] = 2
tuple[2] = 3
重覆元素
可以有重覆的元素。
1
2
3
| tuple1 = (1, 1, 1)
for item in tuple1:
print(item)
|
無法修改 刪除
tuple是唯讀,無法修改刪除元素。
無法修改。
1
2
| tuple1 = (1, 1, 1)
tuple1[0] = 100
|
tuple1[0] = 100
~~~~~~^^^
TypeError: 'tuple' object does not support item assignment
無法刪除。
1
2
| tuple1 = (1, 1, 1)
del tuple1[0]
|
del tuple1[0]
~~~~~~^^^
TypeError: 'tuple' object doesn't support item deletion
元素為list
若元素為list、dict、set,就可以新增/修改/刪除裡面的內容。
tuple的元素為list,可以修改list[0]的內容。
1
2
3
| tuple1 = (1,["H","E"])
tuple1[1][0] = "A"
print(tuple1)
|
但如果要把list[0]指向其它list的記憶體位址,執行時會產生錯誤,因為tuple的元素是無法修改。
1
2
3
| tuple1 = (1,["H","E"])
tuple1[1] = ["Hello", "World"]
print(tuple1)
|
tuple1[1] = ["Hello", "World"]
~~~~~~^^^
TypeError: 'tuple' object does not support item assignment
刪除list的第0個索引。
1
2
3
| tuple1 = (1,["H","E"])
del tuple1[1][0]
print(tuple1)
|
新增list的元素。
1
2
3
| tuple1 = (1,["H","E"])
tuple1[1].append("J")
print(tuple1)
|
tuple常用操作函式
| 函式名 |
說明 |
| len(tuple) |
元素數量 |
| max(tuple) |
元素最大值 |
| min(tuple) |
元素最小值 |
| tuple.count(obj) |
計算obj出現在tuple的次數 |
| tuple.index(obj) |
尋找obj在tuple中的索引位置 |
| obj in tuple |
判斷obj是否在tuple中 |
1
2
3
4
5
6
7
8
9
10
11
| tuple1 = (1, 2, 3, 1, 2)
# 元素數量
print(f"len = {len(tuple1)}")
# 元素最大值
print(f"max = {max(tuple1)}")
# 元素最小值
print(f"min = {min(tuple1)}")
# 計算obj出現在tuple的次數
print(f"count = {tuple1.count(1)}")
# 尋找obj在tuple中的索引位置
print(f"index = {tuple1.index(3)}")
|
len = 5
max = 3
min = 1
count = 2
index = 2
1
2
| tuple1 = (1, 2, 3, 1, 2)
print(3 in tuple1)
|