各種 Python 程式語言的 for
迴圈用法教學,並提供完整範例。
for
迴圈用法Python 的 for
迴圈可以用來對一連串的元素(列表或字串)逐一做處理,而它的使用方式跟其他程式語言稍有不同,Python 的 for
是直接接受一個元素序列,然後逐一取出處理:
# 準備要處裡的序列 words = ['cat', 'monkey', 'bird'] # 使用 for 迴圈對序列進行處理 for w in words: print(w)
如果真的需要對每一個索引數字進行處理,可以使用 range
:
# 印出 0 到 4 for i in range(5): print(i)
0 1 2 3 4
range
如果只給一個參數的話,預設就會從 0
開始。如果給兩個參數就代表開始與結束值:
# 印出 2 到 4 for i in range(2, 5): print(i)
2 3 4
如果想要讓 for
迴圈以反向的方式逐一處理序列元素,只要加上 reversed
函數即可:
words = ['cat', 'monkey', 'bird'] # 反向處理 for w in reversed(words): print(w)
bird monkey cat
如果希望讓序列元素經過排序之後再放入 for
迴圈中處理,可加上 sorted
函數:
words = ['cat', 'monkey', 'bird'] # 排序處理 for w in sorted(words): print(w)
bird cat monkey
Python 的 for
迴圈在對序列進行疊代時,並不需要使用到索引值,如果我們需要讓每個元素都有一個索引編號,可以使用 enumerate
自動為每個元素配上索引編號:
words = ['cat', 'monkey', 'bird'] # 配上索引編號進行疊代 for i, w in enumerate(words): print(i, w)
0 cat 1 monkey 2 bird
另外一種方式就是自己產生索引編號,這種方式稍微複雜一些,不過也是滿常被使用的:
words = ['cat', 'monkey', 'bird'] # 自己產生索引編號 for i in range(len(words)): print(i, words[i])
0 cat 1 monkey 2 bird
在某些情況下,我們可能會一邊疊代一邊改變序列的內容,這時候為了讓 for
迴圈不會因為序列改變而出錯,就需要以另外一份副本進行疊代,而在 Python 中我們可以這樣寫:
words = ['cat', 'monkey', 'bird'] # 以副本進行疊代 for w in words[:]: if len(w) > 4: words.insert(0, w) print(words)
['monkey', 'cat', 'monkey', 'bird']
這裡的 words[:]
就是 words
的一份副本,這樣一來雖然 words
這個列表在 for
迴圈之中被改變了,但是並不會影響 for
的執行。
for
迴圈假設我們要對一條序列以 for
迴圈進行處理,然後將產生的結果儲存在另一個新的序列中:
# 原始序列資料 words = ['cat', 'monkey', 'bird'] # 儲存結果用的列表 results = [] # 用 for 處理後,儲存至 results for w in words: results.append("Hello, %s!" % w) # 輸出結果 print(results)
['Hello, cat!', 'Hello, monkey!', 'Hello, bird!']
像這樣的狀況就可以改用 Python 單行迴圈的寫法,讓程式碼更簡潔:
# 原始序列資料 words = ['cat', 'monkey', 'bird'] # 單行 for 迴圈 results = ["Hello, %s!" % w for w in words] # 輸出結果 print(results)
['Hello, cat!', 'Hello, monkey!', 'Hello, bird!']
使用單行迴圈的效果一樣,但是語法簡單很多。
for
迴圈配合 if
判斷式單行的 for
迴圈也可以配合 if
判斷式進行簡單的資料篩選:
# 成績資料 scores = [92, 84, 56, 82, 73, 50, 78, 93] # 篩選出小於 60 的成績 fail = [s for s in scores if s < 60] # 輸出結果 print(fail)
[56, 50]
如果想要同時疊代多個序列,可以先用 zip
將多個序列打包起來,一起進行疊代:
words = ['cat', 'monkey', 'bird'] values = [342, 453, 21] # 同時疊代多個序列 for w, v in zip(words, values): print(w, v)
cat 342 monkey 453 bird 21
zip
可以一次打包任意個序列,兩個以上的序列都可以這樣使用。
參考資料:Python