2-7 陣列
面對資料量的增加,我們不太可能只用一個變數來儲存一筆資料,例如全班36個人,每人有10個成績,不可能利用360個變數名稱(例如a1_1、a1_2...... a36_9、a36_10)來儲存,這個時候我們需要更有效率的儲存方式,那就是陣列(Array)。陣列就像是置物櫃一樣,只要賦予它一個名稱跟編號(索引值),我們就可以將資料依照位置儲存進去,並且可以隨時取用、更新、刪除,再搭配迴圈的使用,便可快速替我們計算或處理大量的資料,非常方便。
Python裡面的「陣列」(Array)一共有四種類型:
-
串列(List)
串列(或稱「列表」)可以說是 Python 中最基礎的一種資料結構。所謂列表指的就是一群按照順序排序的元素(類似於其他程式語言的 array,但多一些額外功能)。 → 可排序、可修改、可重複、有索引
-
元組(Tuple)
Tuple 類似於 List 的兄弟,但是元素無法修改。 → 可排序、不可修改、可重複、有索引
-
字典(Dictionary)
字典類似 map,包含鍵值與對應的值,可以快速取出對應值。 → 不可排序、可修改、不可重複、有索引
-
集合(Set)
集合類似數學中的集合,裡面包含不重複的元素值。 → 不可排序、無索引、不可重複
表示方法:
- List:
a= ['張三', '李四' , 123]
- Tuple:
b = ('張三', '李四', 123)
- Dictionary :
c= {1:'一月', 2:'二月', 3:'三月'}
- Set:
d = {'張三', '李四', 123, 123}
串列(List)的基本用法
串列是Python中最基本的資料結構。串列中的每個元素都可儲存一筆資料
串列的第一個索引是0,第二個索引是1,依此類推。
串表是最常用的Python資料類型,使用「中括號」括起來,裡面有逗號隔開,串列的資料不需要具有相同的類型。
1.串列的建立
要建立一個串列,只要把逗號分隔的不同的資料項使用方括號括起來即可。如下所示:
list1 = ['Google',10, 'Amazon',20, 2020,30, 2021];40, 50 ]
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"];
list3 = ['張三', '台中市西屯區寧夏路240號', "0912-000111", "2005/4/20", 170 , 65.3]
print(list1)
print(list2)
print(list3)
2.串列資料的取用
要存取串列中的值,可以這樣用:
list1 = ['Google',10, 'Amazon',20, 2020,30, 2021];40, 50 ]
list2 = [1,"a", 2,"b", 3,"c", 4,"d", 5"e", "f"];
print (list1[0])
print (list2[1:2:5])
3.串列資料的更新
要更新串列中的某個值,可以這樣寫:
list = ['Google',70, 'Apple',60, 'Microsoft',80, 2020];90, 100 ]
print ("第4個元素為 : ", list[3])
list[3] = 202195
print ("更新後的第4個元素為 : ", list[3])
輸出:
第4個元素為 :
202090
更新後的第4個元素為 :202195
4.刪除串列的值
要刪除串列中的某的值:
list = ['Google',70, 'Apple',60, 'Microsoft',80, 2021];90, 100 ]
print ("原始列表 : ", list)
del list[2]
print ("刪除第三個元素 : ", list)
輸出:
原始列表 : [
'Google',70,'Apple',60,'Microsoft',80,2021]90, 100]
刪除第三個元素 : ['Google',70,'Apple',60,2021]90, 100]
5.增加串列的資料
用法:
串列名稱.append(資料)
例如:
fruit = [] #建立一個空串列
fruit.append("apple")
print(fruit)
串列與迴圈的整合
1.使用for迴圈(含索引值)
假設現在有五個成績,要列出這五個成績,我們可以這樣寫:
score = [70, 60, 80, 90, 100 ]
for i in range(5):
print(score[i])
如果不知道這個串列一共有幾個元素怎麼辦? 沒關係,我們可以使用 「len()」(length)這個函數。以上一題為例,有一個名為score的串列,只要用len(score)就可以知道裡面有幾個元素。
score = [70, 60, 80, 90, 100 ]
print(len(score))
結果為5。
練習1:計算成績平均:
讓使用者依照座號輸入5筆成績並儲存到列表(List),計算出平均
版本1:不用list
sum=0
for i in range(___ , ___):
score = int(input("請輸入第" + str(i) + "筆成績:"))
sum = ______
print (______)
版本2:使用list
sum=0
list=[]
for i in range(1, 6):
score = int(input("請輸入第" + str(i) + "筆成績:"))
list+=[score]
for i in range(0, 5):
sum += _________
print (sum/5)
6.串列的常用