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