目次
1. 前言
什麼是 Python 的 for in 語法?
Python 的 for in 語法是一種用來處理可疊代資料(如列表、字典、字串等)進行重複操作的語法。
在程式設計中,經常會需要依序處理清單中的元素或進行重複運算。透過 for in 語法,可以撰寫出簡潔且易讀的程式碼。 例如,以下是一個依序取得清單中每個元素並執行處理的基本迴圈寫法:fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)輸出結果apple
banana
cherry如上所示,使用 for in 語法可以逐一取出清單中的元素並執行迴圈處理。本文的目標讀者
本文適合以下讀者閱讀:- Python 新手,想要學習
for in語法的基本用法 - 希望利用
for in有效率地操作列表、字典、集合等資料結構的人 - 想學習
enumerate()、zip()、列表生成式等進階技巧的人
本文可以學到什麼?
閱讀本文後,您將能理解並實作以下內容:for in語法的基本結構與運作原理- 如何在列表、字典、集合、元組中使用
for in語法 - 如何使用
break和continue來控制迴圈 enumerate()、zip()的用法與應用場景for-else語法的概念與實例- 如何使用列表生成式撰寫高效率程式碼
Ad
2. Python 的 for in 語法基礎
什麼是 for in 語法?
for in 語法是 Python 中最常見的迴圈寫法之一。
它可以從列表、字典、元組、字串等資料型別中,依序取出元素並重複執行處理。基本語法
for 變數 in 可疊代物件:
處理變數:用來儲存每次迴圈中取出的元素可疊代物件:像是列表、字典、元組、集合、字串等可以重複取出元素的物件處理:每次迴圈要執行的程式碼
基本範例
要依序處理列表中的元素,可以寫成以下方式:fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)輸出結果apple
banana
cherry在這個例子中,fruits 列表的每個元素會依序被指定給 fruit 變數,然後執行列印的處理。in 運算子的用途
Python 中的 in 運算子可用來檢查某個元素是否存在於列表、字典、字串等資料中。
搭配 for 迴圈使用時,可以逐一取出資料的每個元素來處理。在列表中使用 in 運算子
numbers = [1, 2, 3, 4, 5]
if 3 in numbers:
print("3 存在於列表中")輸出結果3 存在於列表中在字典中使用 in 運算子
在字典(dict 類型)中,in 預設會檢查「鍵(key)」是否存在:person = {"name": "Alice", "age": 25, "city": "Tokyo"}
if "age" in person:
print("存在 age 這個鍵")輸出結果存在 age 這個鍵如果要檢查值(value)是否存在,可以使用 .values() 方法:if 25 in person.values():
print("存在值為 25 的資料")輸出結果存在值為 25 的資料使用 not in 來表示不存在的情況
若要檢查某個元素是否不存在,可以使用 not in:if "email" not in person:
print("email 鍵不存在")輸出結果email 鍵不存在使用 for in 語法的好處
使用 for in 語法有以下幾個優點: ✅ 可讀性高 在處理列表或字典等資料時,程式碼簡潔易懂。 ✅ 不容易發生索引錯誤 不像傳統的 for 迴圈需要自己管理計數器,也較不會超出陣列範圍。 ✅ 能輕鬆處理可疊代資料 像是列表、字典、元組、集合、字串等都能直接使用。小結
本節介紹了 Python 中for in 語法的基本概念。 重點整理如下:for in是用來處理列表、字典等可疊代資料的迴圈語法- 使用
in運算子可以檢查元素是否存在於某個資料中 - 使用
not in可以判斷元素是否不存在 - 使用
for in可以撰寫簡單又可讀性高的程式碼
3. for in 語法的基本用法
Python 的 for in 語法是一個非常實用的工具,適用於反覆處理列表、字典、元組、集合等資料結構。
本章將詳細說明 for in 的基本用法,並搭配各種資料型別提供具體的程式碼範例。使用 for in 處理列表(List)
列表(list 類型)是 Python 中最常用的資料結構之一。
透過 for in 語法,可以依序取得列表中的每個元素並進行處理。基本的列表迴圈處理
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)輸出結果apple
banana
cherry取得列表索引的方法(enumerate())
一般的 for in 只能取得元素本身,若要同時取得元素的索引(位置),可以使用 enumerate() 函數,非常方便。fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")輸出結果0: apple
1: banana
2: cherry使用 for in 處理字典(Dictionary)
字典(dict 類型)是一種儲存「鍵與值」配對的資料結構。
使用 for in 可以逐一取出鍵與對應的值來處理。只取得字典的鍵(key)
當使用for in 遍歷字典時,預設會取得所有的鍵(key):person = {"name": "Alice", "age": 25, "city": "Tokyo"}
for key in person:
print(key)輸出結果name
age
city同時取得鍵與值(使用 items())
如果想要同時取得鍵(key)和值(value),可以使用 .items() 方法:for key, value in person.items():
print(f"{key}: {value}")輸出結果name: Alice
age: 25
city: Tokyo使用 for in 處理元組(Tuple)與集合(Set)
Python 的 for in 語法也適用於元組(tuple 類型)與集合(set 類型)。處理元組
元組與列表類似,但它是一種不可修改(immutable)的資料結構。 可以使用與列表相同的方式來進行迴圈處理:colors = ("red", "green", "blue")
for color in colors:
print(color)輸出結果red
green
blue處理集合
集合(set 類型)是一種不允許重複值的資料結構。 注意:集合中的元素沒有固定順序,因此輸出順序可能會不同。unique_numbers = {1, 2, 3, 4, 5}
for num in unique_numbers:
print(num)輸出結果(順序不固定)1
3
2
5
4使用 for in 處理字串(String)
Python 的字串(str 類型)也可以用 for in 一個字一個字地處理:word = "Python"
for char in word:
print(char)輸出結果P
y
t
h
o
n巢狀 for 迴圈(嵌套迴圈)
你也可以在一個 for 迴圈中再寫一個 for 迴圈,這種結構稱為巢狀迴圈(nested loop)。 例如,當你要處理一個二維列表(矩陣)時,可以這樣寫:matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
for num in row:
print(num, end=" ")
print() # 換行輸出結果1 2 3
4 5 6
7 8 9小結
本章介紹了如何使用for in 語法處理列表、字典、元組、集合和字串等資料結構。 重點整理:- 處理列表 時可以搭配
enumerate()取得索引 - 處理字典 時使用
.items()可同時取得鍵與值 - 元組與集合 也可用
for in遍歷(但集合順序不固定) - 處理字串 時可逐字取得每個字元
- 巢狀
for迴圈 可用於處理多維資料(如二維列表)
Ad
4. for in 的進階應用技巧
除了基本的 for in 用法之外,Python 還提供了許多搭配 for in 使用的實用技巧。
本章將介紹如何使用 range()、zip()、enumerate() 等方法來進行更靈活的迴圈處理。使用 range() 進行數值迴圈
使用 range() 函數可以根據指定的範圍進行數值型迴圈。 range() 是一種記憶體效率高的可疊代物件,可以像列表一樣使用。基本用法
for i in range(5):
print(i)輸出結果0
1
2
3
4預設情況下,range(n) 會產生從 0 到 n-1 的整數。指定起始值、結束值與步進值
可以使用range(start, stop, step) 的形式來自訂起始與結束範圍以及每次增加的數值:for i in range(1, 10, 2):
print(i)輸出結果1
3
5
7
9使用 range() 實現倒序迴圈
只要指定負的步進值,就可以從大到小進行倒序迴圈:for i in range(10, 0, -2):
print(i)輸出結果10
8
6
4
2使用 zip() 同時遍歷多個列表
當需要同時對多個列表進行迴圈時,zip() 函數非常方便。基本用法
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} 的年齡是 {age} 歲")輸出結果Alice 的年齡是 25 歲
Bob 的年齡是 30 歲
Charlie 的年齡是 35 歲當列表長度不一致時
若列表長度不同,zip() 會以最短的列表為基準結束迴圈:names = ["Alice", "Bob"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} 的年齡是 {age} 歲")輸出結果Alice 的年齡是 25 歲
Bob 的年齡是 30 歲使用 enumerate() 同時取得索引值
當需要在迴圈中同時取得每個元素與它的索引位置時,使用 enumerate() 會非常方便。基本用法
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")輸出結果0: apple
1: banana
2: cherry指定起始索引
你也可以透過enumerate() 的第二個參數來指定起始編號:for index, fruit in enumerate(fruits, start=1):
print(f"{index}: {fruit}")輸出結果1: apple
2: banana
3: cherry巢狀 for 迴圈的進階應用
透過巢狀(嵌套)for 迴圈,可以實作多層次的資料處理。
這在處理如矩陣等二維資料時非常實用:使用巢狀迴圈處理二維列表
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for row in matrix:
for num in row:
print(num, end=" ")
print() # 換行輸出結果1 2 3
4 5 6
7 8 9使用 sorted() 排序列表後進行迴圈
若希望在排序後處理列表,可以搭配 sorted() 函數使用:numbers = [5, 3, 8, 1, 2]
for num in sorted(numbers):
print(num)輸出結果1
2
3
5
8倒序排序(降冪)
for num in sorted(numbers, reverse=True):
print(num)輸出結果8
5
3
2
1小結
本章介紹了多種for in 搭配常用函數的實用技巧: 重點整理:range():可用於數值範圍的迴圈處理range(start, stop, step)可自訂起始、結束與步進值zip():可同時處理多個列表的元素- 注意:會以最短列表為準進行迴圈
enumerate():可同時取得索引與元素enumerate(列表, start=起始值)可指定索引起始值- 巢狀
for:可處理多維資料如矩陣 sorted():可排序後再迴圈處理
5. for 迴圈的控制方式
在 Python 中的 for in 迴圈中,可以使用 break 和 continue 等控制語句 來更加靈活地控制迴圈的流程。
本章將詳細說明這些控制方法的用途與使用方式。break 與 continue 的差異
break 和 continue 是用來中斷或跳過某次迴圈處理的控制語句。| 控制語句 | 說明 |
|---|---|
break | 立刻結束整個迴圈 |
continue | 跳過當次處理,繼續下一輪迴圈 |
使用 break 中斷迴圈
當符合某個條件時,可以使用 break 強制結束整個迴圈:numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 3:
print("找到 3,結束迴圈")
break
print(num)輸出結果1
2
找到 3,結束迴圈使用 continue 跳過特定處理
使用 continue 可以略過當次的處理流程,直接跳到下一輪迴圈:numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 3:
print("跳過 3")
continue
print(num)輸出結果1
2
跳過 3
4
5活用 for-else 語法
Python 的 for 迴圈還可以搭配 else 區塊,在迴圈完整執行完畢(未被 break 中斷)時才執行 else 的內容。for-else 的基本使用方式
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 6:
print("找到 6!")
break
else:
print("6 不在列表中")輸出結果6 不在列表中這段程式中,因為列表中沒有 6,所以 for 迴圈正常結束,接著執行 else 區塊的內容。使用 pass 來「什麼都不做」
pass 是一種語法上需要寫內容但實際上什麼都不做的保留字。for num in range(1, 6):
if num == 3:
pass # 這裡什麼都不做
else:
print(num)輸出結果1
2
4
5在這段程式中,當 num == 3 時,會執行 pass,也就是不做任何事情,然後繼續下一輪迴圈。小結
本章介紹了如何使用 Python 的控制語句來精細調整for in 迴圈的行為。 重點整理:- 使用
break可以提前結束整個迴圈 - 使用
continue可以跳過當次處理,繼續下一輪 for-else會在迴圈未被 break 中斷時執行else區塊pass可用於需要語法但實際上不執行任何操作的情境
Ad
6. 列表生成式(List Comprehension)
在 Python 中,使用for 迴圈產生新列表時,可以透過列表生成式(List Comprehension) 來更簡潔地撰寫。
這種寫法不僅提升程式的可讀性,通常在執行效能上也更佳,因此是 Python 中常見又實用的技巧之一。什麼是列表生成式?
列表生成式是一種可以快速建立新列表的語法。 相較於傳統使用for 迴圈的方式,列表生成式可以讓程式碼更簡短、更清晰。基本語法
[運算式 for 變數 in 可疊代物件]運算式:對每個元素進行的操作(如轉換、計算等)變數:從可疊代物件中取出的元素可疊代物件:如列表、字典、集合、字串等可被重複處理的資料
使用傳統 for 迴圈建立列表
numbers = [1, 2, 3, 4, 5]
squared_numbers = []
for num in numbers:
squared_numbers.append(num ** 2)
print(squared_numbers)輸出結果[1, 4, 9, 16, 25]使用列表生成式的寫法
numbers = [1, 2, 3, 4, 5]
squared_numbers = [num ** 2 for num in numbers]
print(squared_numbers)輸出結果[1, 4, 9, 16, 25]帶條件的列表生成式
可以在列表生成式中加入if 條件,僅處理符合條件的元素。篩選偶數
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers)輸出結果[2, 4, 6]將奇數乘以 2 後加入列表
numbers = [1, 2, 3, 4, 5, 6]
double_odd_numbers = [num * 2 for num in numbers if num % 2 == 1]
print(double_odd_numbers)輸出結果[2, 6, 10]使用 if-else 條件語句的列表生成式
也可以在列表生成式中加入 if-else,根據條件套用不同的處理方式:奇數乘 2,偶數保持不變
numbers = [1, 2, 3, 4, 5, 6]
modified_numbers = [num * 2 if num % 2 == 1 else num for num in numbers]
print(modified_numbers)輸出結果[2, 2, 6, 4, 10, 6]巢狀(嵌套)列表生成式
列表生成式也可以寫成巢狀結構,適合處理二維資料或需要雙層迴圈的情境。使用雙層列表生成式展開二維列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened)輸出結果[1, 2, 3, 4, 5, 6, 7, 8, 9]字典生成式(Dictionary Comprehension)
就像列表一樣,Python 也可以使用字典生成式 來快速產生字典:從列表產生平方值字典
numbers = [1, 2, 3, 4, 5]
squared_dict = {num: num ** 2 for num in numbers}
print(squared_dict)輸出結果{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}小結
本章說明了列表生成式的基本用法與進階應用。 重點整理:- 列表生成式可用簡潔的語法快速建立新列表
- 可搭配
if條件篩選元素 - 可搭配
if-else針對不同情況進行處理 - 支援巢狀迴圈,適合處理二維資料
- 字典也可使用相似語法進行生成
Ad
7. 常見問題(FAQ)
雖然 Python 的for in 語法簡潔又強大,但對初學者來說,還是有不少容易卡關的地方。
本章整理了一些關於 for in 的常見問題與解決方式。for in 跟 while 有什麼差別?
Python 中的兩種主要迴圈語法為 for in 與 while。| 迴圈類型 | 特色 |
|---|---|
for in | 重複固定次數 的處理 |
while | 直到條件不成立為止 持續執行 |
for in 的範例(固定次數)
for i in range(5):
print(i)輸出結果0
1
2
3
4✅ 當重複次數已知時,適合使用 for in 迴圈while 的範例(依條件執行)
count = 0
while count < 5:
print(count)
count += 1輸出結果0
1
2
3
4✅ 當重複次數不確定、需依條件控制時,使用 while 更適合in 運算子可以用在哪些資料型別?
Python 的 in 運算子可用於下列可疊代資料型別:| 資料型別 | 可搭配 for in 使用 |
|---|---|
| 列表(list) | ✅ 可以 |
| 元組(tuple) | ✅ 可以 |
| 字典(dict) | ✅ 可以(預設針對鍵 key) |
| 集合(set) | ✅ 可以 |
| 字串(str) | ✅ 可以 |
break 跟 continue 有什麼不同?
| 控制語句 | 用途 |
|---|---|
break | 完全結束 迴圈 |
continue | 跳過 當次處理,直接進入下一輪 |
for-else 是什麼?何時使用?
for-else 是 Python 特有語法,當 for 迴圈未被 break 中斷時,會執行 else 區塊。範例:
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 6:
print("找到 6!")
break
else:
print("6 不在列表中")輸出結果6 不在列表中✅ 適合用於搜尋特定元素並在未找到時執行特別處理如何在 for in 迴圈中使用計數器?
若需手動取得索引,可以使用 enumerate() 函數:enumerate() 的用法
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")✅ 使用 enumerate() 可自動取得索引,無需另外維護變數for in 無法執行時可能原因?
✅ 常見錯誤與解法:- 對非可疊代物件使用迴圈 錯誤例子:
解法: 使用num = 10 for n in num: # TypeError print(n)range():for n in range(num): print(n) - 列表為空
解法: 在迴圈前先確認列表是否為空。items = [] for item in items: print(item) # 不會有輸出
小結
本章介紹了for in 迴圈中常見的疑問與錯誤處理方式。 ✅ 重點整理for適合已知次數的迴圈,while適合依條件反覆執行break可提前結束,continue可跳過當次處理for-else可在未找到目標時補充處理enumerate()可簡潔地取得索引與值
Ad
8. 總結
本篇文章全面介紹了 Python 中的for in 語法,從基礎到進階應用皆有涵蓋。
在這一節,我們將回顧所有內容並整理出重點。for in 的基礎知識
for in是用來處理列表、字典、元組、集合、字串等可疊代資料的迴圈語法- 基本語法
for 變數 in 可疊代物件: 處理 - 列表迴圈的範例
fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit)
for in 的進階技巧
✅ 使用 range() 控制數值迴圈for i in range(5):
print(i) # 0, 1, 2, 3, 4✅ 使用 zip() 同時遍歷多個列表names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} 的年齡是 {age} 歲")✅ 使用 enumerate() 取得索引與值fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits, start=1):
print(f"{index}: {fruit}")✅ 對列表排序後再進行迴圈numbers = [5, 3, 8, 1, 2]
for num in sorted(numbers):
print(num)迴圈控制技巧
✅ 使用break 中途結束迴圈for num in range(1, 6):
if num == 3:
break
print(num)✅ 使用 continue 跳過特定次數for num in range(1, 6):
if num == 3:
continue
print(num)✅ 活用 for-else 結構for num in range(1, 6):
if num == 7:
break
else:
print("找不到 7")使用列表生成式進行迴圈處理
✅ 傳統方式建立平方值列表numbers = [1, 2, 3, 4, 5]
squared_numbers = []
for num in numbers:
squared_numbers.append(num ** 2)✅ 使用列表生成式簡化語法squared_numbers = [num ** 2 for num in numbers]✅ 條件式列表生成even_numbers = [num for num in numbers if num % 2 == 0]✅ 字典生成式squared_dict = {num: num ** 2 for num in numbers}for in 常見錯誤與對策
✅ 無法直接對整數使用 for innum = 10
for i in num: # 錯誤
print(i)➡ 解法for i in range(num):
print(i)✅ 在字典中 in 預設是檢查鍵(key)person = {"name": "Alice", "age": 25}
if "Alice" in person: # 錯誤,因為只檢查鍵
print("存在")➡ 解法:若要檢查值,請使用 .values()if "Alice" in person.values():
print("存在")進一步學習資源
想更深入學習 Python 的for in 語法,可以參考以下資源:- Python 官方文件 https://docs.python.org/3/tutorial/controlflow.html
- 線上 Python 練習平台
- LeetCode(Python 題庫)
- AtCoder(競技程式挑戰)
結語與後續學習方向
本篇文章涵蓋了for in 的基礎用法、進階技巧、控制方式、列表生成式,以及常見問題的解答。 ✅ 掌握 for in,就能更有效地處理資料與控制流程! ✅ 活用列表生成式、zip()、enumerate() 等技巧可提升寫程式的效率與可讀性! ✅ 熟練 break、continue、for-else 等控制語句可避免錯誤並增加靈活性! 接下來的進階學習可以考慮了解 while 迴圈、遞迴函數、產生器(yield) 等更深入的 Python 控制結構。 持續善用迴圈技巧,讓你的 Python 程式碼更簡潔、更高效!



