迭代器

Posted zy1120192493

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器相关的知识,希望对你有一定的参考价值。

像list, tuple, generator,set, str,dict , 列表生成式这种可以被for循环作用的对象被称为Iterable(可迭代对象)

而在之前可以被next()函数调用并不断返回下一个值的对象被称为迭代器iterator。这两者有些不一样。

iterator是一种惰性计算的对象,可以代表一种数据流,我们只能访问现在iterator所在的位置,而无法得知其之后的情况也无法记录之前的情况,一定条件下iterator甚至可以无限大,类比于数学中的递推公式,只能满足递推不可以满足随机跳跃访问,而Iterable可以认为是一个有限的序列,我们可以直接像访问数组那样直接访问其中的一些元素,具有全局的操作可能。

那么久可以这样理解生成器,生成器generator其实就是一个迭代器,不断地通过next()或者在for循环中进行迭代来更新自己的值,但是不能像列表那样直接访问任意一个内部的值。

可以通过iter()函数获得一个迭代器对象。

python的for循环本质上就是通过不断调用next()函数实现的

1 for x in [1, 2, 3, 4, 5]:
2     pass

实际上就完全等价于:

1 it = iter([1, 2, 3, 4, 5])
2 while True:
3     try:
4         x = next(it)
5     except StopIteration:
6         break

可以类比c++中的iterator,输入输出流的iterator也类似于此。

 

以上是关于迭代器的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段6——CSS选择器

行历史查看器 - Git

持久片段和查看器

损坏的顶点和片段着色器

python使用上下文对代码片段进行计时,非装饰器

设计模式迭代器模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )