迭代器
迭代是訪問集合元素的一種方式尼啡。迭代器是一個(gè)可以記住遍歷的位置的對(duì)象。迭代器對(duì)象從集合的第一個(gè)元素開始訪問,直到所有的元素被訪問完結(jié)束锦茁。迭代器只能往前不會(huì)后退
可迭代的對(duì)象
以直接作用于for循環(huán)的數(shù)據(jù)類型有以下幾種:
一類是集合數(shù)據(jù)類型,如list叉存、tuple码俩、dict、set歼捏、str等稿存;
一類是generator,包括生成器和帶yield的generator function瞳秽。
這些可以直接作用于for循環(huán)的對(duì)象統(tǒng)稱為可迭代對(duì)象:Iterable瓣履。
判斷是否可以迭代
可以使用isinstance()判斷一個(gè)對(duì)象是否是Iterable對(duì)象:
而生成器不但可以作用于for循環(huán),還可以被next()函數(shù)不斷調(diào)用并返回下一個(gè)值寂诱,直到最后拋出StopIteration錯(cuò)誤表示無法繼續(xù)返回下一個(gè)值了拂苹。
iter()函數(shù)
生成器都是Iterator對(duì)象,但list痰洒、dict瓢棒、str雖然是Iterable,卻不是Iterator丘喻。
把list脯宿、dict、str等Iterable變成Iterator可以使用iter()函數(shù):
總結(jié)
·凡是可作用于for循環(huán)的對(duì)象都是Iterable類型泉粉;
·凡是可作用于next()函數(shù)的對(duì)象都是Iterator類型
·集合數(shù)據(jù)類型如list连霉、dict榴芳、str等是Iterable但不是Iterator,不過可以通過iter()函數(shù)獲得一個(gè)Iterator對(duì)象跺撼。
·目的是在使用集合的時(shí)候窟感,減少占用的內(nèi)容。