# Python 有序列表的運算 List、Tuple review: List不可變動 Tuple可以變動 ###### tags: `python` [澎澎](https://www.youtube.com/watch?v=JLU5oc4_VtA&list=PL-g0fdC5RMboYEyt6QS2iLb_1m7QcgfHk&index=4) [參考資料-list](http://yltang.net/tutorial/python/11/) [參考資料-list 進階](http://kaiching.org/pydoing/py/python-type-list.html) ## List 有序可變動 ### 1. 索引基本運用 從0開始 ```python= grade = [50,30,80,60,70]; print(grade[2]);#80 grade[2] = 90;#grade = [50,30,90,60] 更新資料 ``` ### 2. 存取串列中元素 **利用索引方式取出串列元素** ```python= numbers = [10, 20, [30, 40, 50]] print(numbers[1]) print(numbers[2]) print(numbers[2][2]) ``` >20 [30, 40, 50] 50 **利用布林運算子 in 判斷是否是成員** ```python= fruits = ['apple', 'orange', 'banana'] print('apple' in fruits) #True print('watermelon' in fruits) #False print('orange' not in fruits) #False ``` **串連 (+) 與重複 (*)** ```python= fruits = ['apple', 'orange', 'banana'] print(fruits + [6, 7, 8, 9]) print([0]*4) ``` >['apple', 'orange', 'banana', 6, 7, 8, 9] [0, 0, 0, 0] **切片 (slice)** ```python= aList = [1, 2, 3, 4, 5, 6] print(aList[1:3]) # 第 1 到第 2 個 print(aList[:4]) # 第 0 到第 3 個 print(aList[3:]) # 第 3 個到最後 print(aList[:]) # 全部 ``` >[2, 3] [1, 2, 3, 4] [4, 5, 6] [1, 2, 3, 4, 5, 6] ### 3. 連續刪除、新增資料 **連續取資料同字串的語法 用 : 刪除的方法用 =[]** 用法: > 要刪除的資料 = [] ```python grade = [50,30,80,60,70]; grade[1:3]=[];#grade = [50,70]; 連續刪除資料 ``` 新增 + ```python grade = [50,30,80,60,70]; grade = grade+[12,33]; #grade = [50,30,80,60,70,12,33]; ``` ### 4. 取得列表長度 語法 len(列表) 一般串列 ```python= grade = [50,30,80,60,70]; print(len(grade));#5 ``` 巢狀串列 >串列長度:最上層的元素數量 ```python= numbers = [10, 20, [30, 40, 50]] print(len(numbers)) #3 ``` ### 5.複製指標、串列 指標 ```python= a = [1, 2, 3] b = a b[0] = 100 # 串列 a 亦更改 print(a)#[100, 2, 3] ``` 串列 ```python= a = [1, 2, 3] b = a[:] b[0] = 100 # 串列 a 不受影像 print(a) #[1, 2, 3] ``` ### 6.刪除元素或串列:del ```python= aList = [1, 2, 3, 4, 5, 6] del aList[1] # 刪除第 1 個元素 print(aList) del aList[1:3] # 刪除第 1 到 2 個元素 print(aList) del aList # 刪除整個串列 print(aList) ``` >[1, 3, 4, 5, 6] [1, 5, 6] NameError: name 'aList' is not defined ### 7. 巢狀 元素是另一個串列 ```python= nestedList = [10, 'Hello', 20.5, [30, 40]] ``` ### 8. 進階 #### 內建串列方法 語法: <theList>.<method>(),例如: a = [4, 2, 3, 1] a.sort() # [1, 2, 3, 4] | 方法| 說明 | | -------- | -------- | | append(x)|將 x 附加到串列的最後 | |clear()|清空串列中的所有元素。| |copy()|回傳串列所有元素的拷貝串列。| |count(x)|回傳 x 在串列中的總數。| |extend(i)| 將i串列加到串列的最後| |index(x, i, j)|回傳 x 的索引值,或索引值 i 到 j 之間元素 x 的索引值。| |insert(i, x)|在索引值 i 的位置插入元素 x 。| |pop(i)|回傳並移除串列索引值 i 的元素| |remove(x)|移除串列中指定的元素 x | |reverse()|將串列中所有元素倒轉排列。 |sort()|將串列中所有元素按大小順序排列。(會直接改變原本的list)| |sorted()|將串列中所有元素按大小順序排列。(sorted,他會對元素排序之後,傳回一個排序好的新 list,而原本的 list 則不受影響)| ##### **append(x)** >append(x) 將 x 附加到串列的最後 ```python= a = [] a.append(1) print(a) a.append(2) print(a) #[1,2] ``` ##### **clear()** >清空串列中的所有元素 ```python= a = [1, 2, 3, 4, 5] a.clear() print(a) #[] ``` ##### **copy()** >回傳串列所有元素的拷貝串列 將串列內的元素複製到另一個串列,記憶體位址還是獨立的兩個 ```python= a = [1, 2, 3, 4, 5] b = a.copy() print(b) #[1, 2, 3, 4, 5] ``` ##### **count(x)** >回傳 x 在串列中的總數 ```python= a = [3, 2, 1, 1, 2] print(a.count(1)) #2 print(a.count(3)) #1 ``` ##### **list.extend(i)** >將迭代器 i 中的元素擴展為串列的元素,將i加入進串列list中 该方法没有返回值,但会在已存在的列表中添加新的列表内容,i要為串列 ```python= a = [1, 2, 3, 4, 5] a.extend([1, 2, 3]) print(a) #[1, 2, 3, 4, 5, 1, 2, 3] ``` ##### **list.index()** >index(x, i, j)回傳 x 的索引值,或索引值 i 到 j 之間元素 x 的索引值 ```python= a = [1, 1, 2, 2, 3] print(a.index(1)) #0 print(a.index(1, 1))#1 print(a.index(2, 3, 4))#3 ``` ##### **list.insert()** >insert(i, x) 在索引值 i 的位置插入元素 x ```python= a = [1, 2, 3] a.insert(0, 8) print(a) #[8, 1, 2, 3] a.insert(2, 8) print(a) #[8, 1, 8, 2, 3] ``` ##### **list.pop()** >pop() 回傳並移除串列的最後一個元素 ```python= a = [1, 2, 3, 4, 5] print(a.pop()) #5 print(a) # [1, 2, 3, 4] print(a.pop()) #4 print(a) #[1,2,3] ``` ##### **list.remove()** >remove(x) 移除串列中指定的元素 x ```python= a = [1, 2, 3, 2, 3] a.remove(2) print(a) #[1, 3, 2, 3] a.remove(3) print(a) #[1, 2, 3] ``` ##### **list.reverse()** >reverse() 將串列中所有元素倒轉排列 ```python= a = [1, 2, 3, 4, 5] a.reverse() print(a) #[5, 4, 3, 2, 1] ``` ##### **list.sort()** >將串列中所有元素按大小順序排列,且**會直接改變原本的 list 內容** >反向排序: a.sort(reverse=True) ```python= a = [4, 2, 3, 1, 5] a.sort() print(a)# [1, 2, 3, 4, 5] a.sort(reverse=True) print(a) #[5,4,3,2,1] ``` ##### **list.sorted()** >對元素由小到大(預設)排序之後,傳回一個排序好的新 list,而**原本的 list 不受影響** >反向排序: a.sorted(reverse=True) ```python= x = [4, 2, 5, 3, 1] # 排序並建立新的 List y = sorted(x) print(y)#[1, 2, 3, 4, 5] yr = sorted(x,reverse=True) print(yr) #[5, 4, 3, 2, 1] ``` ## Tuple 有序不可變動 1.Tuple資料組建立之後,裏頭的資料就不可以再改變。 ```python= ``` 2. Tuple資料組中的資料可以有不同的資料型態,甚至可以包含另一個資料組。 3. Tuple資料組可以利用指定運算子把資料分配給多個變數。 4. Tuple資料組顯示的時候,會用圓括弧把資料括起來。 ### 基本語法