Skip to main content

2-7a 陣列(簡易版)

 

 

為什麼要用「陣列」(array)?

 

當我們要儲存的資料數量一多,光用單一「變數」會變得難以處理,例如要計算五筆成績的平均,可能需要這樣寫:

score1 = 75
score2 = 90
score3 = 63
score4 = 55
score5 = 88
sum = (score1+score2+score3+score4+score5)/5score5
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],
         [76, 58, 82]
        ]

每個同學先以一個陣列儲存(如 [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 : 承上題,請列出第一名的同學總分是幾分?