知行编程网知行编程网  2022-10-08 22:30 知行编程网 隐藏边栏  34 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python中的迭代器有什么用的相关知识,包括python中迭代字典,以及python中迭代什么意思这些编程知识,希望对大家有参考作用。

python中迭代器有什么用


什么是Python迭代器?

迭代器:迭代器可以看作是一个特殊的对象。每次调用该对象时,它都会返回其下一个元素。从实现的角度来看,迭代器对象必须定义 __iter__() 方法和 next() 方法的对象。

1、Python的Iterator对象表示一个数据流,可以看成是一个有序的序列,但是我们无法提前知道序列的长度,所以Iterator的计算是偷懒的,只有在需要返回下一个的时候才可以只有当数据可用时才会计算。

2、Iterator对象可以被next()函数调用,不断返回下一个数据,直到没有数据时抛出StopIteration错误。

3.所有Iterable可迭代对象都可以通过内置函数iter()转化为迭代器。 __iter__()方法是让对象在用for ... in循环遍历时找到数据对象的位置,next()方法是让对象通过next(实例名称)。除了调用内置函数next判断是否为迭代器外,还可以通过集合中的Iterator类型来判断。例如:isinstance('', Iterator) 可以判断字符串类型是否为迭代器。注意:虽然 list、dict 和 str 是 Iterables,但它们不是 Iterators。

4、迭代器的优点:节省内存(循环过程中,不需要一次性读取数据,在处理文件对象时特别有用,因为文件也是迭代器对象),不依赖索引值,并实现惰性计算(需要时取值计算)。

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

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

这样每读取一行就输出一行,而不是一次读取整个文件,节省内存。

5、迭代器的使用有限制:数据只能一个一个地向前访问,访问过的数据不能再访问,遍历访问一次后就不能访问数据了。

举例:

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) #再次循环没有输出

如果需要解决这个问题,可以单独定义一个可迭代对象,在每次访问前从可迭代对象中重新生成可迭代对象和迭代器对象;

6、迭代器在取出所有元素并再次调用next时会抛出StopIteration异常。这不是错误,而是告诉外部调用者迭代已完成。

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

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