python怎么使用迭代器

迭代器(Iterator):迭代器可以看作是一个特殊的对象。每次调用对象时,它都会返回其下一个元素。从实现的角度来看,迭代器对象
必须定义______iter__()方法和next()方法的对象。
Python的Iterator对象表示数据流,可以看作是有序列,但我们不能提前知道序列的长度,所以Iterator
计算是惰性的,只有在需要返回下一个数据时才会计算;Iterator对象可以被next()函数调用并返回下一个数据,直到没有数据
抛出Stopiteration错误;所有Iterable可迭代对象都可以通过内置函数iter()转换为迭代器iteration。__iter__( )方法是让对象可以使用
for … In循环遍历时找到数据对象的位置,next( )方法是让对象通过next(实例名)访问下一个元素。除了内置函数next调用外,还可以
也可以通过collection中的Iterator类型来判断它是否是迭代器。例如: isinstance(’’, Iterator)可判断字符串类型是否迭代。注意
意: list、dict、虽然str是iterable,但它不是iterator。迭代器的优点:节省内存(在循环过程中不需要一次读取数据,特别是在处理文件对象时
因为文件也是迭代器对象,所以很有用)、不依赖索引值,实现惰性计算(需要时再计算值);
例如:以迭代器的形式访问文件
for line in open(“test.txt”):print(line)
这样,每次读取一行,输出一行,而不是一次读取整个文件以节省内存。迭代器的使用有限:只能一个接一个地访问数据
无数据无法再次访问数据,无数据无法再次访问遍历访问
举例:
l=[1,2,3,4] i=iter(l)#迭代器i代从list列表生成 list(i)#将迭代器内容转换为列表,输出[1、2、3、4] list(i)#将迭代器内容再次转换为列表,输出[] for循环访问: i=iter(l) forkini:print(k)#输出1、2、3、4 forkini:print(k)#再循环没有输出
如果需要解决这个问题,可以分别定义可迭代对象,并在每次访问前从可迭代对象重生和迭代对象;当所有元素都被取出时,迭代器
再次调用next后,会抛出Stopiteration异常,这不是错误的,而是告诉外部调用器迭代已经完成。
更多知识请关注Python视频教程。
