Python中的for迴圈與迭代器
阿新 • • 發佈:2022-03-18
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異常時,迴圈結束