Python - for 迴圈



Python 中的for 迴圈可以迭代任何序列的元素,例如列表、元組或字串。它對序列中的每個專案執行相同的操作。此迴圈以for關鍵字開頭,後跟一個變數,該變量表示序列中當前的專案。in關鍵字將變數連結到要迭代的序列。迴圈標題末尾使用冒號 (:),其下方的縮排程式碼塊將為序列中的每個專案執行一次。

Python for 迴圈的語法

for iterating_var in sequence:
   statement(s)

這裡,iterating_var 是一個變數,在每次迭代期間,每個序列項的值都將分配給它。Statements 表示要重複執行的程式碼塊。

迴圈開始之前,會評估序列。如果它是列表,則首先評估表示式列表(如有)。然後,序列中的第一個專案(索引為 0)將分配給iterating_var 變數。

在每次迭代期間,語句塊將使用iterating_var 的當前值執行。之後,序列中的下一個專案將分配給iterating_var,迴圈將繼續,直到整個序列被遍歷。

Python for 迴圈的流程圖

下圖說明了for迴圈的工作原理:

forloop

帶字串的 Python for 迴圈

一個字串Unicode字元的序列,每個字元都有一個位置索引。因為它是一個序列,所以可以使用 for 迴圈迭代其字元。

示例

以下示例比較每個字元,並顯示它是否不是母音 ('a', 'e', 'i', 'o', 'u')。

zen = '''
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
'''
for char in zen:
   if char not in 'aeiou':
      print (char, end='')

執行此程式碼後,將產生以下輸出:

Btfl s bttr thn gly.
Explct s bttr thn mplct.
Smpl s bttr thn cmplx.
Cmplx s bttr thn cmplctd.

Python 迴圈語句與元組

Python 的元組物件也是一個索引序列,因此您可以使用for迴圈遍歷其專案。

示例

在下面的示例中,for迴圈遍歷包含整數的元組,並返回所有數字的總和。

numbers = (34,54,67,21,78,97,45,44,80,19)
total = 0
for num in numbers:
   total += num
print ("Total =", total)

執行此程式碼後,將產生以下輸出:

Total = 539

Python 迴圈語句與列表

Python 的列表物件也是一個索引序列,因此您可以使用for迴圈迭代其專案。

示例

在下面的示例中,for迴圈遍歷包含整數的列表,並僅列印那些能被2整除的數。

numbers = [34,54,67,21,78,97,45,44,80,19]
total = 0
for num in numbers:
   if num%2 == 0:
      print (num)

執行此程式碼後,將顯示以下結果:

34
54
78
44
80

Python 迴圈語句與 range 物件

Python 內建的range()函式返回一個迭代器物件,該物件流式傳輸一系列數字。此物件包含從start到stop的整數,由step引數分隔。您也可以使用range執行for迴圈。

語法

range()函式具有以下語法:

range(start, stop, step)

其中,

  • Start - range的起始值。可選。預設為0

  • Stop - range 達到 stop-1 結束

  • Step - range 中的整數以step值遞增。可選,預設為1。

示例

在這個例子中,我們將看到range與for迴圈的用法。

for num in range(5):
   print (num, end=' ')
print()
for num in range(10, 20):
   print (num, end=' ')
print()
for num in range(1, 10, 2):
   print (num, end=' ')

執行上述程式碼後,將產生以下輸出:

0 1 2 3 4
10 11 12 13 14 15 16 17 18 19
1 3 5 7 9

Python 迴圈語句與字典

與列表、元組或字串不同,Python 中的字典資料型別不是序列,因為專案沒有位置索引。但是,仍然可以使用for迴圈遍歷字典。

示例

對字典物件執行簡單的for迴圈將遍歷其中使用的鍵。

numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
for x in numbers:
   print (x)

執行此程式碼後,將產生以下輸出

10
20
30
40

一旦我們能夠獲取鍵,就可以使用方括號運算子或get()方法輕鬆訪問其關聯值。

示例

以下示例說明了上述方法。

numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
for x in numbers:
   print (x,":",numbers[x])

它將產生以下輸出

10 : Ten
20 : Twenty
30 : Thirty
40 : Forty

dict類的items()、keys()和values()方法分別返回檢視物件dict_items、dict_keys和dict_values。這些物件是迭代器,因此我們可以在它們上執行for迴圈。

示例

dict_items物件是鍵值元組列表,可以在其上執行for迴圈,如下所示:

numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
for x in numbers.items():
   print (x)

它將產生以下輸出

(10, 'Ten')
(20, 'Twenty')
(30, 'Thirty')
(40, 'Forty')

在 For 迴圈中使用 else 語句

Python 支援在迴圈語句中使用else語句。但是,當迴圈遍歷列表完畢時,將執行else語句。

示例

以下示例說明了else語句與for語句的組合,該for語句搜尋10到20之間的素數。

#For loop to iterate between 10 to 20
for num in range(10, 20):  
   #For loop to iterate on the factors 
   for i in range(2,num): 
      #If statement to determine the first factor
      if num%i == 0:      
         #To calculate the second factor
         j=num/i          
         print ("%d equals %d * %d" % (num,i,j))
         #To move to the next number
         break 
      else:                  
         print (num, "is a prime number")
         break

執行上述程式碼後,將產生以下結果:

10 equals 2 * 5
11 is a prime number
12 equals 2 * 6
13 is a prime number
14 equals 2 * 7
15 equals 3 * 5
16 equals 2 * 8
17 is a prime number
18 equals 2 * 9
19 is a prime number
廣告