{%hackmd @dzif24x25/yRBnguqQQl-2ylH1j5h0cg %} # 元組(Tuple) --- ## `tuple`介紹 --- `tuple`是一種能夠儲存多個元素的物件,與`list`類似,但其內部的元素不可修改,只能讀取 --- `tuple`定義時須將元素放置於`()`中來表示 --- ### 程式碼: ```python mytuple = (元素1, 元素2, ..., 元素n) ``` --- ### 範例: ```python tuple1 = ('Hello', 123, True) tuple2 = ('Anthony',) #若只有一個元素,可以這樣定義 tuple3 = 'Apple', 'Banana', 'Orange' #也可以這樣定義tuple ``` --- ## `tuple`的存取 --- ### 程式碼: ```python tuple名稱[索引值(index)] ``` --- ### 範例: ```python scores[2] temperature[15] is_passed[5] ``` --- 註:若索引值<0,則代表倒數第n 範例: ```python scores[-3] #scores中倒數第3個元素 ``` --- ### 搭配`for`迴圈: ```python= scores = (100, 89, 74, 70, 40) for score in scores: print(score, end=' ') ``` --- 輸出結果: ``` 100 89 74 70 40 ``` --- ## `tuple`不可修改 與`list`不同,`tuple`內的元素不可修改,只能讀取 --- ### 如果嘗試修改`tuple`內的元素: --- ```python= firuts = ('Apple', 'Banana', 'Orange') firuts[2] = 'Pineapple' print(firuts) ``` --- 輸出結果: ``` Exception has occurred: TypeError 'tuple' object does not support item assignment File "tuple_example.py", line 2, in <module> firuts[2] = 'Pineapple' TypeError: 'tuple' object does not support item assignment ``` --- 因為如此,`tuple`相較於`list`有更高的安全性,能夠保護資料不被修改 --- ## 元組切片(tuple slices) --- 元組切片與串列切片的概念完全相同 --- 範例: ```python= mylist = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) print('mylist[3:7] =', mylist[3:7]) print('mylist[:7]) =', mylist[:7]) print('mylist[:-4] =', mylist[:-4]) print('mylist[-3:] =', mylist[-3:]) print('mylist[:] =', mylist[:]) print('mylist[::-1] =', mylist[::-1]) #反轉元組 print('mylist[3:7:1] =', mylist[3:7:1]) ``` --- 輸出結果: ``` mylist[3:7] = (4, 5, 6, 7) mylist[:7]) = (1, 2, 3, 4, 5, 6, 7) mylist[:-4] = (1, 2, 3, 4, 5, 6) mylist[-3:] = (8, 9, 10) mylist[:] = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) mylist[::-1] = (10, 9, 8, 7, 6, 5, 4, 3, 2, 1) mylist[3:7:1] = (4, 5, 6, 7) ``` --- ## 方法與函式 --- 如果可以用在`list`上的方法或函式不會改變元組內容,則可以將其應用在`tuple`上 --- ### 範例 - len(): --- ```python= scores = (100, 89, 74, 70, 40) print(len(scores)) ``` --- 輸出結果: ``` 5 ``` --- ### 錯誤範例 - append(): --- 由於`append()`函式會修改到容器中的值,所以`tuple`不能使用 --- ```python= names = ('Anthony', 'John') names.append('Jenny') print(names) ``` --- 輸出結果: ``` Exception has occurred: AttributeError 'tuple' object has no attribute 'append' File "tuple_example.py", line 3, in <module> names.append('Jenny') AttributeError: 'tuple' object has no attribute 'append' ``` --- ## `tuple`與`list`資料轉換 --- ### 強制轉型為`tuple` --- 程式碼: ```python mylist = [1, 'two', True] mytuple = tuple(mylist) print(type(mytuple)) print(mytuple) ``` --- 輸出結果: ``` <class 'tuple'> (1, 'two', True) ``` --- ### 強制轉型為`list` --- 程式碼: ```python mytuple = [1, 'two', True] mylist = list(mytuple) print(type(mylist)) print(mylist) ``` --- 輸出結果: ``` <class 'list'> [1, 'two', True] ```
{"metaMigratedAt":"2023-06-17T23:42:45.164Z","metaMigratedFrom":"YAML","title":"元組(Tuple)","breaks":true,"contributors":"[{\"id\":\"b1b336d5-b75d-4c19-b4f6-fccd69a2a9f2\",\"add\":2869,\"del\":4}]"}
    79 views
   Owned this note