# Python List串列教學 ###### 授課老師: 楊淑惠 科主任 ## :memo: List 一維串列 ### Step 1: 宣告串列 在上學期有簡單介紹過list,在這邊做個複習 ```python thriller=["Thriller","Billie Jean","Beat It"] print("thriller") ``` ["Thriller","Billie Jean","Beat It"] 宣告方式就如何上方,如果要宣告空的串列或快速建立串列,程式如下 ```python list1=[] #空串列 list2=[0]*10 #快速建立為0的串列 print("list1:",list1) print("list2:",list2) ``` list1:[] list2:[0,0,0,0,0,0,0,0,0,0] 若輸入一行 數字已空格隔開 並放入list1中,程式如下 ```python list1=[int(i) for i in input().split()] print(list1) ``` 輸入: 1 2 3 4 5 6 78 9 輸出: [1,2,3,4,5,6,78,9] 練習: 小藍本list第3題 題目:程式碼「myArray=[0]*5」,所宣告myArray陣列有幾個元素? (A)4 (B)5 (C)6 (D)7 第三題宣告[0]*5,也就是myArray=[0,0,0,0,0] ,題目問myArray有幾個元素,總共有5個 ### Step 2: 串列基礎應用 #### len長度 如果想知道list1中有幾個元素,可以使用len()的函式 ```python list1=[45,55,34,457,54,66] print(len(list1)) ``` 輸出:6 #### index索引 索引中,以0為開始,例如list1中的45,索引值為0,如以下程式 ```python list1=[45,55,34,457,54,66] print(list1[0]) #45 print(list1[4]) #54 ``` 而除了索引正數外,也可以利用負號來顯示,-1就是最後一個數 ```python list1=[45,55,34,457,54,66] print(list1[0]) #45 print(list1[4]) #54 print(list1[-1]) #66 print(list1[-3]) #457 ``` 而也可以利用[起始值:終止值]來印出串列的數值,但注意終止值的最後一個值並不會印出,例如[4:7],只會印出4,5,6的索引值,如以下程式 ```python list1=[45,55,34,457,54,66] print(list1[0]) #45 print(list1[4]) #54 print(list1[-1]) #66 print(list1[-3]) #457 print(list1[0:4]) #45,55,34,457 print(list1[2:4]) #34,457 print(list1[4:5]) #54 print(list1[:3]) #數字沒寫就是從開頭 也就是0,1,2 所以是45,55,34 print(list1[4:]) #後面沒寫就是到最後 也就是54,66 ``` 題目練習: 小藍本list第1題 題目:存取陣列的第2個元素,其索引值為何? (A)3  (B)0  (C)1  (D)2 索引值第二個元素,應該為[1] 小藍本list第4題 題目:以下程式執行結束後,B等於? ```python A=[2,3,4,5,6] B=A[2]+A[3] ``` (A)6 (B)8 (C) 9 (D)10 在本題中A[2]為4 A[3]為5,所以B=4+5=9 自我練習: 小藍本list第7題 題目:請問以下程式變數sum最後數值為多少? ```python sum = 0 score=[90,80,70,90,70,50,80] for i in range(0,6,2): sum = sum + score[i] ``` (A)90 (B)210 (C)230 (D)310 串列取代 串列中如果要更新,做法相當簡單,為以下方式 ```python A=[4,5,6,4,8,7] A[0]=50 A[4]=70 print(A) #50,5,6,4,70,7 ``` 以下程式舉例: ```python A=[0]*8 for i in range(8): A[i]=i print(A) #[0,1,2,3,4,5,6,7] ``` 練習: 小藍本list第6題 題目:以下程式執行結束後,B[3]等於? ```python A=[0]*8 B=[0]*8 for i in range(8): A[i]=2*i+1 for j in range(2,8): B[i]=A[i-1]+A[i-2] ``` (A)4 (B)6 (C)8 (D)10 小藍本list第11題 題目:請問以下程式f[4]數值為多少? ```python f=[0]*15 f[0]=1 f[1]=2 for i in range(2,15): f[i]=f[i-1]+f[i-2] ``` (A)2 (B)3 (C)5 (D)8 #### index 函式 若要找出list中的索引,可以用inde的函式,以下程式舉例 ```python list1=[0,4,5,8,9,10,54,8] print(list1.index(5)) #2 print(list1.index(10)) #5 ``` 應用: 要找出list1的最大值跟最小值的索引,程式如下 ```python list1=[0,4,5,8,9,10,54,8] print(list1.index(max(list1))) #6 print(list1.index(min(list1))) #0 ``` #### append 若要額外加入進List中,可用append,程式如下 配合TQC601 題目說明 請撰寫一程式,利用一維串列存放使用者輸入的12個正整數(範圍1~99)。顯示這些數字,接著將串列索引為偶數的數字相加並輸出結果。 提示:輸出每一個數字欄寬設定為3,每3個一列,靠右對齊。 範例輸入 56 45 43 22 3 1 39 20 93 18 44 83 範例輸出 56 45 43 22 3 1 39 20 93 18 44 83 278 輸入一個數字後,利用append加到list裡面 ```python sum1=0 #放總和 list1=[] #宣告空陣列 for i in range(12): a=int(input()) list1.append(a) #將a加入list裡面 if i%2==0: sum1+=a #索引為偶數的相加 for i in range(4): print("%3d%3d%3d"%(list1[i*3],list1[i*3+1],list1[i*3+2])) print(sum1) ``` #### insert 剛剛介紹append是加入到List的後端,而如果要加入指定位置,可以使用insert的語法 ```python thriller=["Thriller","Billie Jean","Beat It"] thriller.insert(1,"That Girl is Mine") print(thriller) ``` ['Thriller','That Girl is Mine','Billie Jean','Beat It'] #### remove del 若要移除list中的元素,可使用remove del 的方始,例如以下 ```python list1=[7,5,44,51] list1.reomve(7) #[5,4,51] del list1[1] #[5,51] del list1 #直接刪除list1 ``` #### sort 如果要進行list中的排序,可以利用sort語法,sort語法會讓他由小到大排續 配合TQC+ 603 題目說明: 請撰寫一程式,要求使用者輸入十個數字並存放在串列中。接著由大到小的順序顯示最大的3個數字。 範例輸入: 40 32 12 29 20 19 38 48 57 44 範例輸出 57 48 44 ```python list1=[] for i in range(10): a=int(input()) list1.append(a) list1.sort() #在list中作由小到大排序 print(list1[9],list1[8],list1[7]) ``` 若要由大到小排序,程式如下 ```python list1.sort(reverse=True) ``` ### Step 3: Invite your team to collaborate!