{%hackmd @themes/orangeheart %} ## wk07_1019_串列與元組 ### 醫放三 B1003210 應雨岑 CH6 1. 串列的使用 2. 使用 for迴圈讀取串列 3. 串列搜尋與計次 4. 串列元素新增與刪除 5. 串列排序 6. 串列常用的方法列表 7. 元組(Tuple) ## 今日課程內容 <pre> 1. list串列的使用:可以提供儲存資料的記憶體空間(or稱清單、列表) 2. 元組(Tuple) </pre> ## NOTE <pre> 串列名稱=[1,2,3,...] #可以放字串、數字等等的 另外也可以宣告空的串列list=[] 多為變數的宣告 list=[["1"],["1,2"],["1,2,3"]] 如果想要顯示第二個串列的第一個內容:print(list[1][0])) # 0表示第一個資料,1表示第二個-意思是程式計算的方式是由0開始數 若想檢索特定的元素可以使用list[起始索引,終止索引,間隔]的方式進行 也可以索引-值,表示從最後一個開始數list[-1] len(list)可以計算元素數量 max(list)可以找到元素內最大值 list.index(...)可以找...在清單中第幾個 .count 可以數...出現幾次 .append 插入一個元素在最後 .insert(3,8)插入8某一個位置(第三個) .pop 移除最後一個元素 </pre> ## [ INCLASS PRACTICE ] * 1. 串列出值設定 ```python list1=[] list2=["蘋果","草莓","櫻桃"] list3=[["法國","澳洲","瑞士"],["羽球","桌球","排球"]] print(list1) print(list2) print(list3) print("我想要去旅遊的國家有",list3[0]) print("其中最想要去旅遊的國家是",list3[0][0]) print("另外我今天會去打",list3[1][2]) print(list2[0:2:1]) ``` [] ['蘋果', '草莓', '櫻桃'] [['法國', '澳洲', '瑞士'], ['羽球', '桌球', '排球']] 我想要去旅遊的國家有 ['法國', '澳洲', '瑞士'] 其中最想要去旅遊的國家是 法國 另外我今天會去打 排球 ['蘋果', '草莓'] * 1. 串列出值設定-2 ```python list2=["蘋果","草莓","櫻桃"] list2.append("香蕉") #增加一個元素在串列裡 print(list2) list2.pop() #括號內沒有內容就是刪掉最後一個 print(list2) list2.pop(0) #pop(0)就是刪掉第一個 print(list2) list2[1]= "西瓜" #把第二個取代成西瓜(櫻桃->西瓜) print(list2) list2.insert(0,"楊桃") #把第一個位置插入楊桃 print(list2) list2.remove("西瓜") #把西瓜移除掉 print(list2) ``` ['蘋果', '草莓', '櫻桃', '香蕉'] ['蘋果', '草莓', '櫻桃'] ['草莓', '櫻桃'] ['草莓', '西瓜'] ['楊桃', '草莓', '西瓜'] ['楊桃', '草莓'] ```python list2.pop() #括號內沒有內容就是刪掉最後一個 print(list2) ``` ['蘋果', '草莓', '櫻桃'] ```python #1. 串列出值設定 list4=[100,89,79] print(max(list4)) print(min(list4)) print(len(list4)) #元素數有幾個 print(list4.count(79)) print(list4.index(79)) ``` 100 79 3 1 2 * 2. 使用 for 迴圈讀取串列元素 ```python print(list4) for n in list4: print(n*3,end=" ") #結束的方式是用 鍵,沒有特別指定時是換行 ``` [100, 89, 79] 300 267 237 0,100 1,89 2,79 ```python for i in range(len(list4)): print(i,list4[i],sep=",") print("---") for j in range(len(list2)): print(j,list2[j],sep=",") ``` 0,100 1,89 2,79 --- 0,楊桃 1,草莓 * 4. 以串列計算班級成績 ```python score=[100,90,50,70,100,100,90,90,60,30] total=0 average=0 n=0 for score in score: total=total+score n=n+1 average=total/n print("總成績為%3.f,平均為%5.2f" % (total,average)) ``` 總成績為780,平均為78.00 * 4. 以串列計算班級成績-2 ```python score=[100,90,50,70,100,100,90,90,60,30] total=0 average=0 n=len(score) #直接知道串列裡面有多少個數字,就不用自己在那邊數了 for scores in score: total=total+scores #n=n+1 average=total/n print("總成績為%3.f,平均為%5.2f" % (total,average)) ``` 總成績為780,平均為78.00 ```python score=[] inscore=0 while(inscore!=-1): inscore=int(input("請輸入成績(輸入好一個數字後就按enter,如果不輸入就按-1)")) if(inscore!=-1): score.append(inscore) print(score) ttl=0 avg=0 n=len(score) for i in score: ttl=ttl+i avg=ttl/n print("總成績為%3.f,平均為%5.2f" % (ttl,avg)) ``` 請輸入成績(輸入好一個數字後就按enter,如果不輸入就按-1)100 請輸入成績(輸入好一個數字後就按enter,如果不輸入就按-1)90 請輸入成績(輸入好一個數字後就按enter,如果不輸入就按-1)80 請輸入成績(輸入好一個數字後就按enter,如果不輸入就按-1)-1 [100, 90, 80] 總成績為270,平均為90.00 * 5. 刪除指定串列元素 ```python fruits=["櫻桃","葡萄","楊桃","香蕉","酪梨","西瓜","龍眼"] to_del="西瓜" print(fruits) ``` ['櫻桃', '葡萄', '楊桃', '香蕉', '酪梨', '西瓜', '龍眼'] ## 全部的note <pre> 計算符號之間可以加空白鍵 <br> ** : 幾次方<br> sep="." : 分隔符號為. end="/" : 結束用/結束 在print內寫入%d : 放入參數答案 (最後在答案要加%) %s : 放入的答案為字串 %f : 放入的答案包含全部小數點 %.1f : 包含 1位小數點 %.3f : 包含 3位小數點 寫法如下- print("身高為%d cm,體重為%d kg,BMI為%.1f " % (height,weight,bmi)) print("顯示的文字",參數名字)<br> my_height = input("請輸入身高(cm)") : 可以輸入文字進去對話框 使用者輸入的文字要轉換成"int" ()<br> print("姓名 成績") print("%3s %3d"%(name1,score1)) #按照字元數進行規則排列出一格表格格式 **次方 //整除的數 /除以 %餘數 and 放在兩個運算子中間,判斷True or False,當兩個都為True才會是True or 放在兩個運算子中間,判斷True or False,當兩個都為False才會是False if,else,elif需使用冒號:還有縮排來寫code .upper可以讓程式不用判斷大小寫 串列list用中括弧括起來 for和其他語法一樣,他同樣也是需要用到:還有縮排來寫程式 break會跳出這個迴圈 continue跳出執行這個code 繼續執行下一個i的程式 None 為一個什麼都沒有的數字,但是他可以做加減乘除的運算 </pre> ## [ afterclass practice ] > 1. 綜合演練 選擇題1-10 (需抄題在markdown cell ; 有程式碼的題目要有code cell ) > 2. 教學影音 lesson 8 * ## 綜合演練 ### ( B ) 1. 執行下列程式,下列結果何者正確? list1 = [1, 2, 3, 4, 5] print(list1[0]) (A) 0 (B) 1 (C) 2 (D) [1, 2, 3, 4,5] #### 因為會列印出list1串列中第一個值(程式判別第一個是從0開始數) ```python list1 = [1, 2, 3, 4, 5] print(list1[0]) ``` 1 ### ( A ) 2. 執行下列程式,下列結果何者正確? list4 = ["香蕉", "蘋果", "橘子"] print(list4[-3]) (A) 香蕉 (B) 蘋果 (C) 橘子 (D) 錯誤,索引值超過範圍 #### 因為引索值若為-的,則會從最後一個數開始數,因此-3是倒數第三個 ```python list4 = ["香蕉", "蘋果", "橘子"] print(list4[-3]) ``` 香蕉 ### ( D ) 3. 執行下列程式,n 的值為多少? scores = [85, 79, 93] n=len(scores) (A) 0 (B) 1 (C) 2 (D)3 #### 因為len表示串列內的元素數,而裡面有三個 ```python scores = [85, 79, 93] n=len(scores) print(n) ``` 3 ### ( B ) 4. 執行下列程式,n 的值為多少? list1 = ["香蕉","蘋果","橘子"] n = list1.index("蘋果") (A) 0 (B) 1 (C) 2 (D)3 #### 因為index是搜尋"蘋果"所在的位置,而蘋果在第二個表示為1 ```python list1 = ["香蕉","蘋果","橘子"] n = list1.index("蘋果") print(n) ``` 1 ### ( A ) 5. 執行下列程式,下列結果何者正確? list1 = ["香蕉","蘋果","橘子"] n = list1.count("西瓜") (A) n=0 (B) n=1 (C) n=2 (D) 出現錯誤 #### 因為.count是計算西瓜出現的次數,然而串列中不包含西瓜,因此最終顯示值為0 ```python list1 = ["香蕉","蘋果","橘子"] n = list1.count("西瓜") print(n) ``` 0 ### ( D ) 6. 執行下列程式,下列結果何者正確? list1 = [1,2,3,4,5,6] m = list1.pop() n = list1.pop(2) (A) m=1, n=6 (B) m=2, n=3 (C) m=6, n=2 (D) m=6, n=3 #### 因為.pop若沒有輸入數字進入時表示是串列中的最後一個,因此m=6,而若立面輸入數字時,則會按照順序數,因此n=3 ```python list1 = [1,2,3,4,5,6] m = list1.pop() n = list1.pop(2) print("m=%d, n=%d" %(m,n)) ``` m=6, n=3 ### ( C ) 7. 執行下列程式,下列顯示結果何者正確? list1 = [1,2,3,4,5,6] list1.insert(-1, "愛") list1.insert(12, "台灣") print(list1[5]) (A) -1 (B) 12 (C) 愛 (D)台灣 #### 因為.insert(-1)時,"愛"會插入再從後面數過來的第一個空格,再輸入.insert(12)時,"台灣"就會放在第12個的位置,因此最終串列為[1, 2, 3, 4, 5, '愛', 6, '台灣'],而系統判定5則為第六個:愛 ```python list1 = [1,2,3,4,5,6] list1.insert(-1, "愛") print(list1) list1.insert(12, "台灣") print(list1) print(list1[5]) ``` [1, 2, 3, 4, 5, '愛', 6] [1, 2, 3, 4, 5, '愛', 6, '台灣'] 愛 ### ( C ) 8. 執行下列程式,下列顯示結果何者正確? list1 = [1,2,3,4,5,6] del list1[1] print(list1) (A) [1,2,3,4,5,6] (B) [2,3,4,5,6] (C) [1,3,4,5,6] (D) [1,2,3,4,5] #### 因為我們把list1[1]也就是第二個數:2給del刪除掉了 ```python list1 = [1,2,3,4,5,6] del list1[1] print(list1) ``` [1, 3, 4, 5, 6] ### ( D ) 9. 執行下列程式,下列顯示結果何者正確? list1=[3,2,1,5] list1.reverse() print(list1) (A) [3,2,1,5] (B) [1,2,3,5] (C) [5,3,2,1] (D) [5,1,2,3] #### 因為.reverse會把整個串列做顛倒,因此[3,2,1,5]的顛倒就是[5,1,2,3] ```python list1=[3,2,1,5] list1.reverse() print(list1) ``` [5, 1, 2, 3] ### ( C ) 10. 執行下列程式,下列顯示結果何者正確? list1=[3,2,1,5] list2=sorted(list1,reverse=True) print(list2) (A) [3,2,1,5] (B) [1,2,3,5] (C) [5,3,2,1] (D) [5,1,2,3] #### 因為我們先讓list1進行按順序sorted的排列(由小到大),再做顛倒reverse的動作,因此最終得到數據為 [5,3,2,1] ```python list1=[3,2,1,5] list2=sorted(list1,reverse=True) print(list2) ``` [5, 3, 2, 1] * ## 教學影音 lesson 8 這次的教學影片主要是在介紹關於list清單、串列的使用方式,在list裡面可以放入很多個元素,透過引索的方式還可以找出特定的元素,如list[1:4]就是找清單中第一個、第二個還有第三個的值出來。另外還講到了之前上課介紹的range。 ## [ self practice ] * 刪除指定串列元素1 ```python fruits=["櫻桃","葡萄","楊桃","香蕉","酪梨","西瓜","龍眼"] a=fruits.count("西瓜") if a!=0: #表示有西瓜 num=fruits.index("西瓜") del fruits[num] print(fruits) else: print("沒有找到西瓜") ``` 沒有找到西瓜 * 刪除指定串列元素2 ```python put=[] putin=1 while (putin!="0"): putin=str(input("請輸入水果,若輸入結束請按0")) if (putin!="0"): put.append(putin) print(put) no=input("請輸入不要的水果名稱") b=put.count(no) if b!=0: number=put.index(no) del put[number] print("刪除%s成功" % no) print(put) else: print("沒有找到%s" %no) ``` 請輸入水果,若輸入結束請按0apple 請輸入水果,若輸入結束請按0banana 請輸入水果,若輸入結束請按0cherry 請輸入水果,若輸入結束請按0lemon 請輸入水果,若輸入結束請按0grava 請輸入水果,若輸入結束請按0pineapple 請輸入水果,若輸入結束請按0stawberry 請輸入水果,若輸入結束請按00 ['apple', 'banana', 'cherry', 'lemon', 'grava', 'pineapple', 'stawberry'] 請輸入不要的水果名稱banana 刪除banana成功 ['apple', 'cherry', 'lemon', 'grava', 'pineapple', 'stawberry']
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up