Categories: Python

Python for 迴圈用法教學與範例

各種 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

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago