Python 中的 For 循環:你需要知道的一切

已發表: 2022-08-18

本教程將通過代碼示例教您如何在 Python 中使用 for 循環

在編程中,循環可幫助您重複一組特定的語句。 在以下情況下,您將使用for循環進行明確的迭代:

  • 你知道你將處理一個元素數量有限的序列
  • 您會事先看到重複次數

本教程將教你如何在 Python 中使用 for 循環。 您將從學習語法和使用 for 循環的簡單迭代開始。 然後,您將了解處理命令行參數、使用循環控制語句等。

讓我們開始吧…

Python for 循環的語法

Python for 循環的語法

在 Python 中使用 for 循環的通用語法如下:

 for item in iterable: # do something on item statement_1 statement_2 . . . statement_n

在上面的語法中:

  • item是循環變量。
  • iterable表示任何 Python 可迭代對象,例如列表、元組和字符串。
  • statement_1statement_n表示循環體中的語句。

注意:請務必在可迭代的名稱後添加一個冒號 ( : ,並將循環體中的所有語句縮進四個空格。

Python中常見的循環構造

for 循環結構

使用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:當分別循環遍歷fruitsstudents列表時。

使用帶有 range() 函數的 for 循環

當您想通過其索引訪問列表項時,可以使用range()函數。

在 Python 中, range(start, stop, step)返回一個範圍對象,您可以循環獲取索引: startstart + 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換循環

如何在 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 循環遍歷數組

您可以使用循環遍歷數組並嵌套 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
python-for-loop-命令行參數

綜上所述, 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 語句

for 循環內部的 break 語句

與其他編程語言一樣,Python 也支持使用循環控制語句breakcontinue 。 這些語句可以根據某些條件幫助改變循環中的控制流。 讓我們看看如何在 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

你明白為什麼在這種情況下我們可以有一個無限循環嗎?

python-for-無限循環

好吧,你有一個callable-object和一個sentinel值。 如果可調用的返回值永遠不等於哨兵,那麼循環將永遠繼續!

讓我們使用上面的函數double作為可調用對象,並將哨兵值設置為 0。

注意:提及函數double的名稱,而不是函數調用double()

由於函數double的返回值始終為 2 且從不等於 0,因此我們有一個無限循環!

️ 嘗試運行以下代碼單元。 它是無限循環的,你必須強制停止程序。

 for _ in iter(double,0): print("Running...")
python-for-loop-infinite

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() 方法。