一、可迭代對象與迭代器的區(qū)別
1、定義不同
Iterable:可迭代對象是指實現(xiàn)了 iter() 方法的對象,該方法返回一個迭代器對象。
Iterator:迭代器是指實現(xiàn)了 iter() 和 next() 方法的對象,其中 iter() 方法返回迭代器對象本身,而 next() 方法返回迭代器的下一個元素。
2、使用方式不同
Iterable:可迭代對象可以使用 for 循環(huán)和 list() 等函數(shù)進行迭代訪問。在 for 循環(huán)中,會自動調(diào)用迭代器的 next() 方法,直到拋出 S較好Iteration 異常為止。使用 list() 函數(shù)可以將可迭代對象轉(zhuǎn)換成列表,從而進行訪問。
Iterator:迭代器需要使用 next() 函數(shù)來獲取下一個元素,當(dāng)?shù)鞅闅v完所有元素時,會自動拋出 S較好Iteration 異常。此外,迭代器只能單向遍歷,不能反向遍歷。
3、記憶狀態(tài)不同
Iterable:可迭代對象在進行迭代訪問時,不會記憶之前的訪問狀態(tài),每次都從頭開始遍歷。
Iterator:迭代器在進行迭代訪問時,會記憶之前的訪問狀態(tài),每次調(diào)用 next() 方法時,會從上一次停止的位置開始遍歷。