知行编程网知行编程网  2022-11-12 11:30 知行编程网 隐藏边栏  3 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python怎么使用迭代器的相关知识,希望可以帮到处于编程学习途中的小伙伴

python如何使用迭代器

迭代器(Iterator):迭代器可以看作是一个特殊的对象,每次调用该对象时会返回自身的下一个元素,从实现上来看,一个迭代器对象

必须是定义了__iter__()方法和next()方法的对象。

Python的Iterator对象表示一个数据流,可以看成是一个有序的序列,但是我们无法提前知道序列的长度,所以Iterator

计算是惰性的,只有在需要返回下一条数据时才会计算; Iterator对象可以被next()函数调用,继续返回下一个数据,直到没有数据为止

引发 StopIteration 错误;所有 Iterable 可迭代对象都可以通过内置函数 iter() 转换为迭代器。 __iter__( ) 方法是使对象可用

for ... in 循环查找数据对象的位置,next() 方法允许对象通过next(实例名)访问下一个元素。除了调用内置函数next之外,还可以

除了判断是否为迭代器外,还可以通过集合中的Iterator类型来判断。例如:isinstance('', Iterator) 可以判断字符串类型是否为迭代器。笔记

含义:虽然 list、dict 和 str 是 Iterables,但它们不是 Iterators。迭代器的优点:节省内存(循环过程中,不需要一次性读取数据,尤其是处理文件对象时

有用,因为文件也是迭代器对象)、不依赖索引取值、实现惰性计算(需要时再取值计算);

举例:用迭代器的方式访问文件

for line in open(“test.txt”):print(line)

这样每读取一行就输出一行,而不是一次读取整个文件,节省内存。迭代器的使用有限制:数据只能一个一个地向前访问,并且数据已经被访问过

数据无法再次访问、遍历访问一次后再访问无数据

举例:

l = [1,2,3,4]
i=iter(l) #从list列表生成迭代器i
list(i) #将迭代器内容转换成列表,输出[1,2,3,4]
list(i) #将迭代器内容再次转换成列表,输出[]
用for循环访问:
i=iter(l)
for k in i:print(k) #输出1、2、3、4
for k in i:print(k) #再次循环没有输出

如果需要解决这个问题,可以单独定义一个可迭代对象,在每次访问前从可迭代对象中重新生成可迭代对象和迭代器对象;迭代器是当所有元素都被取出时

后再次调用next就会抛出一个StopIteration异常,这并不是错误的发生,而是告诉外部调用者迭代完成了。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享