---
# System prepended metadata

title: wk07_1019_串列與元組
tags: [python]

---

# wk07_1019_串列與元組_陳姿頴

## 章節大綱
5.1 串列(list)的使用
   - 一維串列宣告
   - 使用[]，用逗號分隔不同元素
   - 空串列:[]
   
5.2 使用 for迴圈讀取串列

5.3 串列搜尋與計次

5.4 串列元素新增與刪除

5.5 串列排序

5.6 串列常用的方法列表

5.7 元組(Tuple)
   - 可視為常數數列
---  
## 課程目標
1. list 
2. tuple

## [inclass practice]


```python
list1 = []
list2 = ["蘋果","柚子","水梨"]
list3 = [["澳洲","英國","法國"],["羽球","籃球","足球"]]

print(list1)
print(list2)
print(list3)
```

    []
    ['蘋果', '柚子', '水梨']
    [['澳洲', '英國', '法國'], ['羽球', '籃球', '足球']]
    


```python
print("我最想去的國家是 %s" % list3[0][0])  
#%s:稍後要插入的變數的位置
#%:特殊的操作符，用來將一個變數的值插入到字串中的%s位置
#list3[0][0]:list3的第一組的第一個元素
```

    我最想去的國家是 澳洲
    


```python
print(list2[0:2:1])
```

    ['蘋果', '柚子']
    


```python
list2.append("檸檬")     #新增一元素在最後
print(list2)
```

    ['蘋果', '柚子', '水梨', '檸檬']
    


```python
list2.pop()    #刪掉最後一個
```




    '檸檬'




```python
list2.pop(0)   #刪掉第一個
```




    '蘋果'




```python
print(list2)
```

    ['柚子', '水梨']
    


```python
list2[1] = "冬瓜"   #修改第二個
print(list2)
```

    ['柚子', '冬瓜']
    


```python
list2.insert(0, "橘子")    #新增一元素在最前面
print(list2)
```

    ['橘子', '柚子', '冬瓜']
    


```python
list2.remove("冬瓜")       #移除特定元素
```

### {範例}
1. 串列出值設定 \<list1>
2. 使用 for 迴圈讀取串列元素 \<list2>
3. 利用迴圈配合索引讀取串列元素 \<list3>
4. 以串列計算班級成績 \<append1>
5. 刪除指定串列元素  \<remove>
6. 成績由大到小排序  \<sorted>


```python
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
    


```python
#使用 for 迴圈讀取串列元素 \<list2>

print(list4)

for n in list4 :
    print(n,end = ' ')
```

    [100, 89, 79]
    100 89 79 


```python
for i in range(len(list4)):
    print(i, list4[i], sep= ",")
#sep:定義在多個值或元素之間的分隔符
```

    0,100
    1,89
    2,79
    


```python
list2 = ["蘋果","柚子","水梨"]
for i in range(len(list2)):
    print(i, list2[i], sep= ",")
#len:該函數返回序列的長度，通常以一個整數形式返回
```

    0,蘋果
    1,柚子
    2,水梨
    


```python
for n in list2:
    print(n * 3, end=' ')
```

    蘋果蘋果蘋果 柚子柚子柚子 水梨水梨水梨 


```python
#以串列計算班級成績 \<append1>
#指定輸入
scores = [100,90,50,70,100,100,90,60,30,40]

score = list
ttl = 0
avg = 0
n = len(scores)

for score in scores :
    ttl = ttl + score
    n = n + 1  
    
avg = ttl / n

print("總成績 : %3.0f , 平均成績 : %5.2f " % (ttl , avg))
#%3.0f:輸出一個浮點數，佔用3個字符的位置，小數部分顯示為0
#%5.2f:輸出一個浮點數，佔用5個字符的位置，小數部分顯示2位
```

    總成績 : 730 , 平均成績 : 36.50 
    


```python
#不指定輸入
scores = []

inscore = 0

while inscore != -1:
    inscore = int(input("enter score, to end just enter -1 and enter"))
    if inscore != -1:
        scores.append(inscore)
        
print(scores)

```

    enter score, to end just enter -1 and enter100
    enter score, to end just enter -1 and enter-1
    [100]
    


```python
scores = []

inscore = 0

while inscore != -1:     #!=:不等於
    inscore = int(input("enter score, to end just enter -1 and enter"))
    if inscore != -1:
        scores.append(inscore)
ttl = 0
for score in scores:
    ttl = ttl + score
    n = len(scores)
avg = ttl / n

print("共有%d人, 總成績 : %3.0f , 平均成績 : %5.2f " % (n, ttl , avg))
```

    enter score, to end just enter -1 and enter100
    enter score, to end just enter -1 and enter-1
    共有1人, 總成績 : 100 , 平均成績 : 100.00 
    


```python
#刪除指定串列元素  \<remove>
fruits = ["蘋果","柚子","水梨","葡萄柚"]
#to_del = "柚子"

fruits.remove("柚子")
```

## [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]


```python
list1 = [1, 2, 3, 4, 5]

print(list1[0])
```

    1
    

#### ( A ) 2. 執行下列程式，下列結果何者正確？

list4 = ["香蕉", "蘋果", "橘子"]

print(list4[-3])

(A) 香蕉 (B) 蘋果 (C) 橘子 (D) 錯誤，索引值超過範圍


```python
list4 = ["香蕉", "蘋果", "橘子"]

print(list4[-3])
```

    香蕉
    

#### ( D ) 3. 執行下列程式，n 的值為多少？

scores = [85, 79, 93]

n=len(scores)

(A) 0 (B) 1 (C) 2 (D)3


```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


```python
list1 = ["香蕉","蘋果","橘子"]

n = list1.index("蘋果")

print(n)
```

    1
    

#### ( A ) 5. 執行下列程式，下列結果何者正確？

list1 = ["香蕉","蘋果","橘子"]

n = list1.count("西瓜")

(A) n=0 (B) n=1 (C) n=2 (D) 出現錯誤


```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


```python
list1 = [1,2,3,4,5,6]

m = list1.pop()

n = list1.pop(2)

print("m=",m,",","n=",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)台灣


```python
list1 = [1,2,3,4,5,6]

list1.insert(-1, "愛")

list1.insert(12, "台灣")

print(list1[5])
```

    愛
    

#### ( 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]


```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]


```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]


```python
list1=[3,2,1,5]

list2=sorted(list1,reverse=True)

print(list2)
```

    [5, 3, 2, 1]
    

## [selfpractice]

### {綜合演練}
實作2.
輸入喜歡的水果，直到Enter鍵結束，找尋fruit = ["香蕉","蘋果","橘子","鳳梨","西瓜"]水果串列是否包含此水果，並顯示該水果是串列中的第幾項


```python
fruit = ["香蕉","蘋果","橘子","鳳梨","西瓜"]
n = 0
while True:
    a = input("輸入喜歡的水果")
    if a in fruit:
        n = fruit.index (a)+ 1
        print(f"包含{a}，第{n}項")
    else:
        print(f"{a}不在水果串列中")
```

    輸入喜歡的水果蘋果
    包含蘋果，第2項
    

實作6.
西元2021年是牛年。請你開發一個程式:
當使用者輸入他的出生西元年之後，畫面會顯示這個西元年的生肖。


```python
sign = ["鼠","牛","虎","兔","龍","蛇","馬","羊","猴","雞","狗","豬"]
while True:
    a = int(input("輸入他的出生西元年"))
    n = (a - 1900) % 12
    b = sign[n]
    print(f"{a}年的生肖是{b}")
```

    輸入他的出生西元年1900
    1900年的生肖是鼠
    
