迭代器

Posted effortsing

tags:

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

迭代器

为什么要用迭代器

为什么不使用列表而使用迭代器,列表可以获取列表长度,然后使用变量i对列表索引进行循环,而且容器理解,也可以获取集合的所有元素。

没错,使用列表的代码是容易理解也很好操作,但这是要付出代价的。列表之所以可以用索引来快速定位其中的任何一个元素,是因为列表是一下子将所有的数据都装在在内存中,

而且是一块连续存在的空间。当数量比较小时,实现比较容易;当数据量大时,会非常消耗内存资源。而迭代就不同,迭代是读取多少元素,就讲多少元素装载到内存中。


实例:

在这个例子中定义了一个迭代器类(Fibonacci),用于无限迭代斐波那数列。

class Fibonacci:
    # 在构造方法中定义两个变量a和b,用来表示斐波那数列的最开始的两个值
    def __init__(self):
        self.a=0
        self.b=1
    def __next__(self):
        # self.a就是当前要迭代的值
        result=self.a
        #计算斐波那数列的下一个值,并将a变成原来的b,降b变成下一个值
        self.a,self.b=self.b,self.a+self.b
        # 返回当前迭代的值
        return result
    #该方法必须返回迭代器
    def __iter__(self):
        return self
fibs=Fibonacci()
#对斐波那数列进行迭代
for fib in fibs:
    print(fib,end=" ")
    #迭代的值不能超过500
    if fib > 500:
        break


E:pythonpython.exe E:/progect/untitled1/untitled1/urls.py
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 

 

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

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

行历史查看器 - Git

持久片段和查看器

损坏的顶点和片段着色器

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

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