迭代器

Posted aheng

tags:

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

迭代器就是迭代的工具

迭代:指的是重复迭代,每一次迭代的结果都是基于上一次结果而来的

迭代器:

指的是迭代取值的工具

PS:如果我们想知道python中迭代器是什么,首先我们要知道什么是可迭代对象

可迭代对象

凡是内部有.__iter__()

方法的都是可迭代对象,比如str,list,tuple,dict,set,f(文件)

技术图片

 

 

获取迭代器

通过序列类型.__iter__()方法得到的返回值,就是迭代器对象

list = [1,2,3]
print(list.__iter__())

打印结果:
<list_iterator object at 0x0000022F3EEDC848>

如何迭代取值?

通过迭代器对象.__next__(),每执行一次,都会从迭代器对象中取一个值,取完再取的话就会报错:StopIteration

# 迭代取值
list = [1, 2, 3,4]
list.__iter__().__next__()
print(list.__iter__().__next__())

打印结果:
1

这里举个例子,有4个元素取5个会怎样?

技术图片

 技术图片

 

 那么现在我们就可以用try和except把异常抛出

try:捕获异常(StopIteration)

except:抛出异常

list1 = [1, 2, 3, 4]
list_iter = list1.__iter__()
try:
    print(list_iter.__next__())
    print(list_iter.__next__())
    print(list_iter.__next__())
    print(list_iter.__next__())
    print(list_iter.__next__())
except StopIteration:
    print(end)

技术图片

 

 迭代器对象的优点

1、不依赖于索引迭代取值

2、节省内存空间

缺点:

1、取指定的某个值麻烦

2、每次取值都要从第一个开始,无法通过索引进行取值

可迭代对象和迭代器对象的区别:

可迭代对象:凡是内部有.__iter__()方法的都是可迭代对象

迭代器对象:通过序列类型.__iter__(),得到的返回值就是迭代器对象

注意:可迭代对象不一定是迭代器对象

  但迭代器对象一定是可迭代对像

 

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

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

行历史查看器 - Git

持久片段和查看器

损坏的顶点和片段着色器

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

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