1. 程式人生 > 其它 >Python中的for迴圈與迭代器

Python中的for迴圈與迭代器

for迴圈是每個程式語言中必不可少的流程控制語句。在Python中,for用於遍歷一個迭代物件的所有元素。迴圈內的語句會對每個元素都執行一次,類似遍歷一個集合。

簡單的遍歷,如下,該for迴圈將list中的每個數字列印了一遍:

 

 

 語法:

for element in iterable:
   statements(s)

 

iterable即迭代物件,當一個迭代物件作為引數傳給iter()方法時,會返回一個迭代器物件:

 

 

迭代器,在Python中被定義為一個表現為流式資料的物件。將物件傳遞給內建的next()方法時,它會從與之關聯的流式資料中返回下一個值,一旦所有資料都遍歷結束,就會丟擲一個”StopIteration“異常

 

 

iter()方法要求傳入的是可迭代物件,才會返回一個迭代器。而產生的迭代器也同樣是一個迭代物件(因為迭代器本身支援迭代器協議),它同樣可以被iter(0方法所迭代,得到另一個迭代器。

它和普通迭代物件(如list列表)不同的是,普通迭代物件傳入iter(),每次都返回不同的迭代器,而在迭代器上呼叫iter(),都是返回同一個迭代器

 

 

這裡有幾個簡單的概念需要了解一下:

迭代:即逐個獲取元素的過程,也可以叫遍歷

可迭代:即實現了__iter__方法的物件。基本上Python中的有序列表都是可迭代的。

迭代器:即實現了__next__方法的物件。使用next(),迭代器會返回下一個值,若沒有返回的值了,則返回Stopiteration異常

 

當一個迴圈開始時,首先會獲取它的迭代器。for迴圈會呼叫該排程器的__next__()方法,獲取迭代器的下一個元素,並執行程式碼塊中的語句。當next到最後發現Stopiteration異常時,迴圈結束