從我們作為 Python 程序員的角度來看,你可以使用迭代器來做的唯一有用的事情是將其傳遞給內置的 next 函數,或者對其進行循環遍歷:
>>> next(iterator)
1
>>> list(iterator)
[2, 3, 5, 7]
如果我們第二次循環遍歷迭代器,我們將一無所獲:
>>> list(iterator)
[]
你可以把迭代器看作是惰性迭代器,它們是一次性使用,這意味著它們只能循環遍歷一次。
正如你在下面的真值表中所看到的,可迭代對象並不總是迭代器,但是迭代器總是可迭代的:
對象可迭代?迭代器?可迭代對象V?迭代器VV生成器VV列表VX
回顧
序列是迭代器,但是不是所有的迭代器都是序列。當有人說“迭代器”這個詞時,你只能假設他們的意思是“你可以迭代的東西”。不要假設迭代器可以被循環遍歷兩次、詢問它們的長度或者索引。
迭代器是 Python 中最基本的可迭代形式。如果你想在代碼中做一個惰性迭代,請考慮迭代器,並考慮使用生成器函數或生成器表達式。
最後,請記住,Python 中的每一種迭代都依賴於迭代器協議,因此理解迭代器協議是理解 Python 中的循環的關鍵
寫在最後
閱讀更多 新啟創意 的文章