#!/usr/bin/python
# Filename: for.py
for i in range(1, 5):
print i
else:
print 'The for loop is over'
輸出
$ python for.py
1
2
3
4
The for loop is over
它如何工作
在這個程序中,我們打印了一個 序列 的數(shù)。我們使用內建的 range 函數(shù)生成這個數(shù)的序列。
我們所做的只是提供兩個數(shù),range 返回一個序列的數(shù)。這個序列從第一個數(shù)開始到第二個數(shù)為止。例如,range(1,5)給出序列[1, 2, 3, 4]。默認地,range 的步長為 1。如果我們?yōu)閞ange 提供第三個數(shù),那么它將成為步長。例如,range(1,5,2)給出[1,3]。記住,range 向上 延伸到第二個數(shù),即它不包含第二個數(shù)。
for 循環(huán)在這個范圍內遞歸—— for i in range(1,5)等價于 for i in [1, 2, 3, 4],這就如同把序列中的每個數(shù)(或對象)賦值給 i,一次一個,然后以每個 i 的值執(zhí)行這個程序塊。在這個例子中,我們只是打印 i 的值。
記住,else 部分是可選的。如果包含 else,它總是在 for 循環(huán)結束后執(zhí)行一次,除非遇到 break 語句。
記住,for..in 循環(huán)對于任何序列都適用。這里我們使用的是一個由內建 range 函數(shù)生成的數(shù)的列表,但是廣義說來我們可以使用任何種類的由任何對象組成的序列!我們會在后面的章節(jié)中詳細探索這個觀點。
給 C/C++/Java/C#程序員的注釋
Python 的 for 循環(huán)從根本上不同于 C/C++的 for 循環(huán)。C#程序員會注意到 Python 的 for 循環(huán)與 C#中的 foreach 循環(huán)十分類似。Java 程序員會注意到它與 Java 1.5 中的 for (int i : IntArray)相似。 在 C/C++中,如果你想要寫 for (int i = 0; i < 5; i++),那么用 Python,你寫成 for i in range(0,5)。你會注意到,Python 的 for 循環(huán)更加簡單、明白、不易出錯。