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