2-6a 陣列(簡易版)
為什麼要用「陣列」(array)?
當我們要儲存的資料數量一多,光用單一「變數」會變得難以處理,例如要計算五筆成績的平均,可能需要這樣寫:
score1 = 75
score2 = 90
score3 = 63
score4 = 55
score5 = 88
sum = score1+score2+score3+score4+score5
print("平均分數為", sum / 5 )
如果成績更多筆,程式會變得更不好寫,因此我們需要一個可以儲存多個資料的「變數」,就好像置物櫃一樣,只要給它一個編號(索引值),到時候要放入物品(存入資料)或取出物品(讀取資料)只要給它編號就可以了。
前面那個例子使用了陣列之後,會變成以下程式:
score = [75, 90, 63, 55, 88]
sum = 0
for i in range(5):
sum += score[i]
print("平均分數為", sum/5)
程式將會更有效率而且簡化許多。
陣列的用法
要宣告(declare)陣列(在Python中我們目前用的是「串列」)的語法為:
陣列名稱 = [元素1, 元素2, 元素3, .....]
要取出陣列(串列)裡面的資料,語法為:
陣列名稱[索引值]
要注意的是,索引值是從 0 開始編號的,不是從1開始,所以上面的例子如果改寫成:
score = [75, 90, 63, 55, 88]
print (score[1])
得到的結果將是 90。
作業 1 :請自己設定10個同學的成績,算出總分及平均。
作業 2 :承上題,請在迴圈中使用if,找出該10名同學中最高分為幾分。
二維陣列
當資料的維度一多了之後,一維陣列已經無法儲存,例如每個同學都有數筆月考成績,要分別計算每個同學的平均分數,此時光用一維陣列已經不夠,因此我們可能會需要二維以上的陣列。
例如五個同學各有三筆成績,可以這樣寫:
score = [
[85, 67, 90],
[75, 90, 63],
[71, 55, 81],
[65, 91, 70],
[45, 80, 53]
]
每個同學先以一個陣列儲存(如 [85, 67, 90]),再將多個陣列以逗點隔開後,最外面在包上一組中括號,就變成了二維陣列。同樣的方式依此類推,可以變成三維、四維…陣列。
以上面的程式為例,如果要取出第三位同學的第二個成績,要怎麼寫呢?
答案是 score[2][1],你看出來了嗎?
要存入資料或取出資料的語法為:
陣列名稱[索引值1][索引值2]
索引值一樣都是從0開始。
如果要分別計算這5位同學的平均,可以這樣寫:
for i in range(5):
sum=0
for j in range(3):
sum += score[i][j]
print(i+1,"號同學的平均分數為", sum/3)
作業 3 : 請設計一個程式,以二維陣列來儲存5位同學、四科成績,並算出這5位同學的總分及平均。
作業 4 : 承上題,請找出最高分、最低分第一名的同學總分是幾分?
作業 5 : 承上題,請列出第一名的同學總分是幾分?