Python中的for循環和C/C++中的for循環很不一樣:
在C++中,for循環是下面這樣的:
int i,value1,value2;
for (i = 0; i < 10; i++)
{
value1 = 2 + i;
value2 = i - 3;
}
而在Python中,for循環是下面這樣的格式:
for <variable> in <sequence>:
<statements>
else:
<statements>
其中的else語句,即:
else:
<statements>
不是必須的。
可見,二者的確是有很大的區別。
C++的for循環是靠一個變量及判定條件去控制循環體的執行,而Python中的for循環本質上是去遍歷可迭代的對象。
Python中for循環的示例如下:
languages = ["C", "C++", "Perl", "Python"]
for x in languages:
print(x)
運行結果如下:
從這個例子可以看出,果然Python中的for循環本質上是去遍歷可迭代的對象。
現在問題來了,有時候我需要知道我當前執行了多少次循環,比如以上面的例子,當遍歷到Perl次的時候,如果從0開始的話,應該是第2次,這時候我們就可以用將可迭代對象轉化為枚舉對象來實現。
示例代碼如下:
languages = ["C", "C++", "Perl", "Python"]
for index, x in enumerate(languages):
print(index, x)
運行結果如下:
從這個示例代碼中我們可以看出,可以用內置函數enumerate()來實現將別的可迭代對象轉化為枚舉對象,枚舉對象本質上也是一種可迭代的對象,只不過它的每個元素都有兩個屬性,一是枚舉值,二是具體的內容。
正是因為它的每個元素都有兩個屬性,其中一個就是枚舉值,所以我們可以知道我們作了多少次循環。
內置函數enumerate()的語法如下:
enumerate(iterable, start)
參數:
iterable—可迭代對象
start—數字。定義枚舉對象的起始編號。默認值為 0。
我們可以利用它的第二個參數將上面例子的循環次數由0開始計數到1開始計數,修改後的代碼如下:
languages = ["C", "C++", "Perl", "Python"]
for index, x in enumerate(languages, 1):
print(index, x)
運行結果如下: