遍歷
前一章節介紹過可以使用 a[index]
得到 list 內的某一個元素。接下來要介紹的是如何一一檢查 list 內所有的元素,「把所有元素拿出來一個一個處理」的過程我們叫做「迭代」(iterate)。
for loop
最快的做法就是直接使用 for 迴圈把每一個元素抓出來。
>>> keywords = ['for', 'if', 'elif', 'else']
>>> for word in keywords:
... print(word)
...
for
if
elif
else
加總
現在有一個所有元素都是數字的 list ,我想得到把所有數字加總起來的結果,用一個初始化為 0 的變數不斷累加:
>>> all_scores = [80, 5, 65, 20]
>>> total = 0
>>> for score in all_scores:
... total = total + score
...
>>> total
170
集體調分!
現在要把每一個成績做「開根號乘10」的調分,用上面的做法,可能會寫出這樣的程式:
>>> all_scores = [100, 25, 64, 36]
>>> for score in all_scores:
... score = int((score ** 0.5) * 10)
...
>>> scores
[100, 25, 64, 36]
我們可以看到 all_scores
這個 list 並沒有被改變,這是因為 score
並不是 all_scores
內的那個變數,而是把 100, 25, 64, 36 這些數字複製出來。
要更改list內的元素還是要使用 index
來直接修改:
>>> all_scores = [100, 25, 64, 36]
>>> for i in range(len(all_scores)):
... score = all_scores[i]
... all_scores[i] = int((score ** 0.5) * 10)
...
>>> all_scores
[100, 50, 80, 60]
- 使用
len( list變數 )
知道有多少個元素,在這個範例內len(all_scores)
會等於 4。 - 使用
range( 數字 )
列舉出 0~(數字-1) 的所有 index 。
enumerate( LIST )
直接來看 enumerate
的使用方式:
>>> for i, score in enumerate(all_scores):
... print(i, score)
...
0 100
1 50
2 80
3 60
>>> for i, score in enumerate(all_scores):
>>> for i in range(len(all_scores)):
... all_scores[i] = int((score ** 0.5) * 10)
...
>>> all_scores
[100, 50, 80, 60]
章節回顧
for 變數 in LIST:
可以直接取出元素的值,但不能透過這個變數更改 LIST 的內容。range( len(LIST) )
可以列舉所有的 index 。enumerate(LIST)
很棒。