Python for迴圈語句

2019-10-16 23:07:33

Python中的for語句能夠遍歷任何序列的專案,例如列表或字串。

語法

for iterating_var in sequence:
    statements(s)

如果序列包含表示式列表,則首先進行評估求值。 然後,序列中的第一個專案被分配給疊代變數iterating_var。 接下來,執行語句塊(statement(s))。列表中的每個專案都分配給iterating_var,並且執行語句塊,直到整個序列耗盡完成。

流程圖

range()函式

內建的函式range()是對一系列數位進行疊代的函式。它生成一個算術進化的疊代器。

範例

>>> range(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]

範例

range()生成一個疊代器,以處理0n-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()函式提供了疊代的實際順序。

迴圈中使用else語句

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