# 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!