遍歷

前一章節介紹過可以使用 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) 很棒。

results matching ""

    No results matching ""