Python中的for
語句能夠遍歷任何序列的專案,例如列表或字串。
語法
for iterating_var in sequence:
statements(s)
如果序列包含表示式列表,則首先進行評估求值。 然後,序列中的第一個專案被分配給疊代變數iterating_var
。 接下來,執行語句塊(statement(s)
)。列表中的每個專案都分配給iterating_var
,並且執行語句塊,直到整個序列耗盡完成。
流程圖
內建的函式range()
是對一系列數位進行疊代的函式。它生成一個算術進化的疊代器。
範例
>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
範例
range()
生成一個疊代器,以處理0
到n-1
的整數。要獲取序列的列表物件,可將其列為list()
。現在可以使用for
語句疊代此列表。
>>> for var in list(range(5)):
print (var)
上面範例程式碼將產生以下輸出 -
0
1
2
3
4
範例
#!/usr/bin/python3
for letter in 'Python': # traversal of a string sequence
print ('Current Letter :', letter)
print()
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # traversal of List sequence
print ('Current fruit :', fruit)
print ("Good bye!")
當執行上述程式碼時,會產生以下結果 -
Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : h
Current Letter : o
Current Letter : n
Current fruit : banana
Current fruit : apple
Current fruit : mango
Good bye!
疊代遍歷每個專案的另一種方法是通過索引偏移到序列的索引位置。以下是一個簡單的例子 -
範例
#!/usr/bin/python3
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print ('Current fruit :', fruits[index])
print ("Good bye!")
當執行上述程式碼時,會產生以下結果 -
Current fruit : banana
Current fruit : apple
Current fruit : mango
Good bye!
在這裡呼叫內建len()
函式,該函式計算元組中的元素總數以及內建range()
函式提供了疊代的實際順序。
Python支援在迴圈語句中關聯else
語句。
如果else
語句與for
迴圈一起使用,則只有在for
迴圈正常終止(而不是遇到break
語句)時才執行else
塊。
如果else
語句與while
迴圈一起使用,則在條件變為false
時執行else
語句。
範例
以下範例說明了使用else
語句在for
迴圈中,搜尋列表中的偶數的用法。
#!/usr/bin/python3
numbers = [11,33,55,39,55,75,37,21,23,41,13]
for num in numbers:
if num%2 == 0:
print ('the list contains an even number')
break
else:
print ('the list doesnot contain even number')
當執行上述程式碼時,會產生以下結果 -
the list does not contain even number