Python 中的 For 循環:你需要知道的一切
已發表: 2022-08-18本教程將通過代碼示例教您如何在 Python 中使用 for 循環。
在編程中,循環可幫助您重複一組特定的語句。 在以下情況下,您將使用for循環進行明確的迭代:
- 你知道你將處理一個元素數量有限的序列
- 您會事先看到重複次數
本教程將教你如何在 Python 中使用 for 循環。 您將從學習語法和使用 for 循環的簡單迭代開始。 然後,您將了解處理命令行參數、使用循環控制語句等。
讓我們開始吧…
Python for 循環的語法

在 Python 中使用 for 循環的通用語法如下:
for item in iterable: # do something on item statement_1 statement_2 . . . statement_n
在上面的語法中:
- item是循環變量。
- iterable表示任何 Python 可迭代對象,例如列表、元組和字符串。
- statement_1到statement_n表示循環體中的語句。
注意:請務必在可迭代的名稱後添加一個冒號 ( :
,並將循環體中的所有語句縮進四個空格。
Python中常見的循環構造

使用for循環時:
- 您可以使用上一節中討論的語法直接訪問這些項目。
- 您可以將 for 循環與 Python 內置函數(例如
range()
和enumerate()
結合使用。
我們將在本節中介紹它們。
使用 for 循環訪問元素
為了提高可讀性,您應該選擇一個循環變量來指示列表包含的內容。 例如,在下面的示例中, nums
是我們使用num
作為循環變量的數字列表。 請注意for num in nums:
是如何直觀且易於閱讀的。
nums = [4,5,9,1,3] for num in nums: print(num) # Output 4 5 9 1 3
添加更多示例,您可以使用for fruit in fruits:
和for student in students:
當分別循環遍歷fruits
和students
列表時。
使用帶有 range() 函數的 for 循環
當您想通過其索引訪問列表項時,可以使用range()
函數。
在 Python 中,
range(start, stop, step)
返回一個範圍對象,您可以循環獲取索引:start
、start + step
等,直到但不包括stop
。
for i in range(len(nums)): print(nums[i]) # Output 4 5 9 1 3
您還可以使用range()
函數生成要循環的數字序列。 在下面的示例中,我們將可選step
參數設置為 2。因此,我們以 2 為步長獲取從 10 到但不包括 20 的數字。
for i in range(10,20,2): print(i) # Output 10 12 14 16 18
將 for 循環與 enumerate() 函數一起使用
當您想要遍歷一個可迭代對象並同時訪問項目及其索引時,您可以使用 enumerate() 函數。
這是一個例子。
for idx, num in enumerate(nums): print(f"{idx}:{num}") # Output 0:4 1:5 2:9 3:1 4:3

如何在 Python 中使用 for 循環從列表中讀取項目
要使用 for 循環遍歷 Python 列表,您可以使用上一節中的通用語法。
在下面的示例中, nums
是可迭代的,num 是循環變量。
nums = [4,5,9,1,3] for num in nums: print(f"{num} times 3 is {num*3}") # action on each num # Output 4 times 3 is 12 5 times 3 is 15 9 times 3 is 27 1 times 3 is 3 3 times 3 is 9
如何在 Python 中使用 for 循環遍歷字符串
Python 字符串是可迭代的,您可以執行循環、索引、切片等。
注意:Python 沒有內置的字符數據類型。 因此,您可以將字符視為長度為 1 的字符串。
my_string = "Code" for char in my_string: print(char) # Output C o d e
如何在 Python 中使用 for 循環遍歷數組

您可以使用循環遍歷數組並嵌套 for 循環。
在下面的代碼片段中,array1 是一個嵌套列表,其中包含較小的列表作為其元素。 因此,遍歷 array1 會給出每一行,如下所示。
array1 = [[2,3],[7,8]] for row in array1: print(row) # Output [2, 3] [7, 8]
要訪問每一行中的單個元素,您可以使用另一個for
循環。
array1 = [[2,3],[7,8]] for row in array1: for elt in row: print(elt)
在上面的代碼單元格中:
- 外部 for 循環可幫助您索引行。
- 內部 for 循環使您能夠利用每一行中的元素。
這是相應的輸出。
Output 2 3 7 8
如何使用 for 循環讀取命令行參數

作為開發人員,您應該能夠從命令行運行 Python 腳本並使用命令行參數與您的腳本進行交互。
您可以使用 Python 的內置模塊(例如 sys 和 argparse)來解析和讀取命令行參數。
在本節中,我們將討論如何使用sys
模塊和使用for
循環——循環遍歷命令行參數列表。
在 sys 模塊中, sys.argv
是您傳入的命令行參數列表。因此您可以像遍歷任何 Python 列表一樣遍歷sys.argv
。
# main.py import sys for arg in sys.argv: print(arg)
您現在可以從命令行運行程序,如下所示。
$ python main.py Hello Python3 main.py Hello Python3
默認情況下,模塊的名稱是第一個參數,並且在sys.argv
中的索引為零。
如果要訪問索引和相應的參數,可以使用range()
函數。
# main.py import sys for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
️ 接下來,重新運行 main.py。
$ python main.py Hello Python3 arg0 is main.py arg1 is Hello arg2 is Python3
假設您想要解析和處理模塊名稱以外的參數。 您可以將起始值設置為 1,如下面的代碼單元格所示。
# main.py import sys for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
$ python main.py Hello Python3 arg1 is Hello arg2 is Python3

綜上所述, main.py 文件包含以下代碼。

# main.py import sys print("\nPrinting all command-line arguments...") for arg in sys.argv: print(arg) print("\nPrinting all command-line arguments with index...") for i in range(len(sys.argv)): print(f"arg{i} is {sys.argv[i]}") print("\nPrinting command-line arguments except arg0: module_name...") for i in range(1,len(sys.argv)): print(f"arg{i} is {sys.argv[i]}")
這是運行模塊時的輸出。
$ python main.py Hello Python3 Printing all command-line arguments... main.py Hello Python3 Printing all command-line arguments with index... arg0 is main.py arg1 is Hello arg2 is Python3 Printing command-line arguments except arg0: module_name... arg1 is Hello arg2 is Python3
如何在 for 循環中使用 break 語句

與其他編程語言一樣,Python 也支持使用循環控制語句break
和continue
。 這些語句可以根據某些條件幫助改變循環中的控制流。 讓我們看看如何在 for 循環中使用它們。
當特定條件為True
時, break
語句可用於跳出循環。
我們想編寫一個程序來執行以下操作:
- 固定
k
,輸入的數量。 - 使用
for
循環讀取用戶輸入——一次一個數字,並對非負數(大於或等於零)求和。 - 只要用戶輸入非負數,這個過程就應該繼續。
- 當用戶輸入負數時,退出循環並打印出總和。
這是執行上述任務的代碼。
k= 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: break # exit loop when num < 0 sum += num print(sum)
如果用戶輸入小於零的數字,則控件會跳出 for 循環,進入循環後的第一條語句。
Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 10
如何在 for 循環中使用 continue 語句
continue
語句可用於根據特定條件跳過某些迭代。
讓我們使用上一節中的相同示例。
- 讀入用戶輸入併計算非負數的總和。
- 如果用戶輸入負數,則跳過該迭代繼續下一個迭代,並讀入下一個數字。
k = 5 sum = 0 for i in range(k): num = int(input("\nEnter a number: ")) if num<0: continue sum += num print(sum)
這是一個示例輸出。
Enter a number: 2 Enter a number: 3 Enter a number: 5 Enter a number: -1 Enter a number: 3 13
第四個數字是-1,它是負數。 然而,這一次 for 循環一直持續到我們達到指定數量的輸入,並忽略負輸入。 本質上,它返回k個輸入數字中所有非負數的總和。
你會在 Python 中遇到無限循環嗎?

在我們迄今為止討論的所有示例和用例中,我們從未遇到過無限 for 循環的問題。 但是我們可以在 Python 中有一個無限的 for 循環嗎?
考慮以下函數double()
。
def double(x = 1): return x*2
- 當您調用函數
double()
而不指定x
的值時,將使用默認值 1。 - 在函數調用中為
x
指定值時,將使用該值。
double() # Returns: 2 double(20) # Returns: 40
在 Python 中,iter() 函數返回一個迭代器對象。 您可以使用next(iter-obj)
遍歷序列並訪問後續項目。
– 考慮一個可調用對象和一個值,哨兵。
–
iter(callable-object, sentinel)
可用於執行迭代,直到callable-object
的返回值等於sentinel
。
你明白為什麼在這種情況下我們可以有一個無限循環嗎?

好吧,你有一個callable-object
和一個sentinel
值。 如果可調用的返回值永遠不等於哨兵,那麼循環將永遠繼續!
讓我們使用上面的函數double
作為可調用對象,並將哨兵值設置為 0。
注意:提及函數double
的名稱,而不是函數調用double()
。
由於函數double
的返回值始終為 2 且從不等於 0,因此我們有一個無限循環!
️ 嘗試運行以下代碼單元。 它是無限循環的,你必須強制停止程序。
for _ in iter(double,0): print("Running...")

Python For 循環:練習題
#1 。 使用 for 循環打印出 0 到 20 範圍內的所有偶數。
提示:使用具有正確step
值的range()
函數。
#2 。 打印出從 20 到 0 的所有偶數。
提示:對range()
函數中的step
參數使用負值。
#3 。 創建一個三維 NumPy 數組。
提示:根據需要使用 for 循環和嵌套 for 循環來訪問數組中的行和單個條目。
包起來
這是您在本教程中學到的內容的摘要。
- 使用 Python for循環以及range()和enumerate()函數的語法
- 使用 for 循環遍歷列表、數組和字符串,並讀取命令行參數
- 使用循環控制語句: break跳出循環, continue語句跳過某些迭代——基於條件——在 for 循環內
- 了解 Python 中無限 for 循環的可能性
接下來,學習如何在 Python 中使用 split() 方法。