知識點分享(2)更深入理解 Python 中的迭代

從我們作為 Python 程序員的角度來看,你可以使用迭代器來做的唯一有用的事情是將其傳遞給內置的 next 函數,或者對其進行循環遍歷:

>>> next(iterator)

1

>>> list(iterator)

[2, 3, 5, 7]

如果我們第二次循環遍歷迭代器,我們將一無所獲:

>>> list(iterator)

[]

你可以把迭代器看作是惰性迭代器,它們是一次性使用,這意味著它們只能循環遍歷一次。

正如你在下面的真值表中所看到的,可迭代對象並不總是迭代器,但是迭代器總是可迭代的:

對象可迭代?迭代器?可迭代對象V?迭代器VV生成器VV列表VX

回顧

序列是迭代器,但是不是所有的迭代器都是序列。當有人說“迭代器”這個詞時,你只能假設他們的意思是“你可以迭代的東西”。不要假設迭代器可以被循環遍歷兩次、詢問它們的長度或者索引。

迭代器是 Python 中最基本的可迭代形式。如果你想在代碼中做一個惰性迭代,請考慮迭代器,並考慮使用生成器函數或生成器表達式。

最後,請記住,Python 中的每一種迭代都依賴於迭代器協議,因此理解迭代器協議是理解 Python 中的循環的關鍵

寫在最後

知識點分享(2)更深入理解 Python 中的迭代


分享到:


相關文章: