Python for 循環

在Python中,for循環是一種迭代函數。如果你有一個類似列表的序列對象,你可以使用for循環來迭代列表中包含的項目。

for循環的功能與其他多個編程語言中看到的功能沒有太大不同。

在本文中,我們將詳細探討Python中的for循環,並學習如何迭代不同的序列,包括列表、元組等。此外,我們還將學習使用break和continue語句來控制循環的流程。

何時使用for循環

每當你需要重複執行一個代碼塊固定次數時。如果你不知道它必須重複的次數,請改用“while循環”語句。

for循環Python語法

Python中for循環的基本語法看起來類似下面提到的一樣。

for itarator_variable in sequence_name:
	Statements
	. . .
	Statements

Python for loop語法詳解

  • 語句的第一個單詞以關鍵詞“for”開頭,表示for循環的開始。
  • 然後是迭代器變量,它遍歷序列並可以在循環內部使用以執行各種功能
  • 接下來是Python中的“in”關鍵詞,告訴迭代器變量在序列中循環的元素
  • 最後,我們有序列變量,它可以是列表、元組或任何其他類型的迭代器。
  • 循環的語句部分是您可以使用迭代器變量並執行各種功能的地方

Python字符串是一系列字符。如果在您的任何編程應用程序中,您需要逐個檢查字符串的字符,您可以在這裡使用for循環。

這是如何工作的。

word="anaconda"
for letter in word:
	print (letter)

輸出:

a
n
a
c
o
n
d
a

這個循環之所以有效,是因為Python將“字符串”視為一系列字符,而不是將字符串視為整體。

使用for循環迭代Python列表或元組

列表元組是可迭代對象。現在讓我們看看如何遍歷這些對象中的元素。

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
	print (word)

輸出:

Apple
Banana
Car
Dolphin

現在,讓我們繼續並開始遍歷元組的元素。

nums = (1, 2, 3, 4)

sum_nums = 0

for num in nums:
    sum_nums = sum_nums + num

print(f'Sum of numbers is {sum_nums}')

# 輸出
# 數字的總和為10

嵌套Python for循環

當我們在另一個for循環內部有一個for循環時,它被稱為嵌套for循環。嵌套for循環有多種應用。

考慮上述列表示例。for循環從列表中打印出單詞。但如果我們想要打印出列表中每個單詞的各個字符呢?

這就是嵌套for循環更好的地方。第一個循環(父循環)將逐個遍歷單詞。第二個循環(子循環)將遍歷每個單詞的字符。

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
        #此循環從列表中提取單詞
        print ("The following lines will print each letters of "+word)
        for letter in word:
                #此循環從單詞中提取字母
                print (letter)
        print("") #此打印用於打印一個空行

輸出

A nested loop is structurally similar to nested if statements

Python for循環與range()函數

Python range是內置函數之一。當您希望for循環運行特定次數,或者需要指定要打印的對象範圍時,range函數非常適用。

在使用range()時,您可以將1到3個整數參數傳遞給它:

  • start表示序列開始的整數值,如果不包含此值,則start從0開始
  • stop始終是必需的,並且是計數到但不包含的整數。
  • step 設置下一次迭代增加的量(或在負數情況下減少的量),如果省略則 step 默認為 1

考慮以下示例,我想打印數字 1、2 和 3:

for x in range(3):
    print("Printing:", x)
	
# 輸出

# 打印:0
# 打印:1
# 打印:2

range 函数除了起始和停止之外,還接受另一個參數。這是 步驟參數。它告訴 range 函数在每個計數之間跳過多少數字。

在下面的示例中,我使用數字 3 作為步驟,你可以看到輸出的數字是上一個數字 + 3。

for n in range(1, 10, 3):
    print("Printing with step:", n)
	
# 輸出

# 帶步驟打印:1
# 帶步驟打印:4
# 帶步驟打印:7

我們還可以為我們的 step 參數使用負值來反向迭代,但我們將不得不相應地調整我們的 startstop 參數:

for i in range(100,0,-10):
   print(i)

這裡,100 是 start 值,0 是 stop 值,-10 是範圍,所以循環從 100 開始,以每次迭代減少 10 結束。這在輸出中發生:

Output
100 90 80 70 60 50 40 30 20 10

在Python编程中,for循环通常利用range()序列类型作为其迭代的参数。

带有for循环的break语句

break语句用于提前退出for循环。当满足特定条件时,它用于中断for循环。

假设我们有一个数字列表,我们想要检查一个数字是否存在。我们可以遍历数字列表,如果找到数字,则跳出循环,因为我们不需要继续遍历剩余的元素。

在这种情况下,我们将使用Python的if else条件以及我们的for循环。

nums = [1, 2, 3, 4, 5, 6]

n = 2

found = False
for num in nums:
    if n == num:
        found = True
        break

print(f'List contains {n}: {found}')

# 输出
# 列表包含2: True

带有for循环的continue语句

我们可以在for循环中使用continue语句来跳过特定条件下的for循环体的执行。

假設我們有一個數字列表,我們想要打印出正數的總和。我們可以使用 continue 陳述來跳過負數的 for 迴圈。

nums = [1, 2, -3, 4, -5, 6]

sum_positives = 0

for num in nums:
    if num < 0:
        continue
    sum_positives += num

print(f'Sum of Positive Numbers: {sum_positives}')

Python for 迴圈與 else 區塊

我們可以在 Python for 迴圈 中使用 else 區塊。當 for 迴圈 不是因為 break 陳述而終止時,else 區塊才會執行。

假設我們有一個函數,如果所有數字都是偶數,我們才要打印數字的總和。

如果存在奇數,我們可以使用 break 陳述來終止 for 迴圈。我們可以在 else 部分打印總和,這樣它只有在 for 迴圈正常執行時才會打印。

def print_sum_even_nums(even_nums):
    total = 0

    for x in even_nums:
        if x % 2 != 0:
            break

        total += x
    else:
        print("For loop executed normally")
        print(f'Sum of numbers {total}')


# 這將打印總和
print_sum_even_nums([2, 4, 6, 8])

# 由於序列中存在奇數,這將不會打印總和
print_sum_even_nums([2, 4, 5, 8])

# 輸出

# For 迴圈正常執行
# 數字總和為 20

使用順序資料類型的 For 迴圈

列表和其他資料序列類型也可以作為for迴圈中的迭代參數。與遍歷range()不同,您可以定義一個列表並遍歷該列表。

我們將一個列表賦值給一個變量,然後遍歷該列表:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for shark in sharks:
   print(shark)

在這種情況下,我們打印出列表中的每一個項目。儘管我們使用了變量shark,我們可以將變量命名為任何其他有效的變量名稱,我們將得到相同的輸出:

Output
hammerhead great white dogfish frilled bullhead requiem

上面的輸出顯示for迴圈遍歷了列表,並將列表中的每個項目逐行打印。

列表和其他基於序列的資料類型,如字符串元組常用於與迴圈一起使用,因為它們是可迭代的。您可以將這些資料類型與range()結合使用,例如:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for item in range(len(sharks)):
   sharks.append('shark')

print(sharks)
Output
['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']

在這裡,我們為每個sharks列表的長度添加了一個佔位字符串'shark'

您還可以使用for迴圈從頭開始構建一個列表:

integers = []

for i in range(10):
   integers.append(i)

print(integers)

在這個例子中, integers 列表被初始化為空,但 for 循環通過以下方式填充列表:

Output
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

同樣,我們可以遍歷字符串:

sammy = 'Sammy'

for letter in sammy:
   print(letter)
Output
S a m m y

遍歷元組的格式與上面遍歷列表或字符串的格式相同。

當遍歷字典時,重要的是要牢記鍵:值結構,以確保您調用字典的正確元素。這是一個同時調用鍵和值的示例:

sammy_shark = {'name': 'Sammy', 'animal': 'shark', 'color': 'blue', 'location': 'ocean'}

for key in sammy_shark:
   print(key + ': ' + sammy_shark[key])
Output
name: Sammy animal: shark location: ocean color: blue

在使用帶有 for 循環的字典時,迭代變量對應於字典的鍵, dictionary_variable [iterating_variable] 對應於值。在上面的例子中,迭代變量 key 被用來代表鍵, sammy_shark [key] 被用來代表值。

循環通常用於遍歷和操作連續的數據類型。

結論

Python中的for循環與其他編程語言非常相似。我們可以使用break和continue語句來改變執行方式。但是,在Python中,我們也可以使用可選的else塊。

I hope you have gained some interesting ideas from the tutorial above. If you have any questions, let us know in the comments below.

從這裡開始,你可以通過閱讀關於while迴圈break、continue和pass語句的教程來繼續學習。

要在項目中使用for迴圈,請參考以下教程:

Source:
https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-python-3