Python学习之迭代器和生成器

Posted liuzhaoling

tags:

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

那么首先什么是迭代器和生成器呢?

迭代器即迭代的工具,那么什么又是迭代呢?所谓迭代:迭代是一个重复的过程,每次重读即一次迭代,并且每次迭代的结果都是下一次迭代的初始值。例:

l=[1,2,3]
count=0
while count < len(l): 
    print(l[count])
    count+=1

重点:

  一、可迭代对象

    可迭代对象值得是内置有__iter__方法的对象,例:

hello.__iter__
(1,2,3).__iter__
[1,2,3].__iter__

  二、迭代器对象

可迭代对象执行__iter__()的到结果就是迭代器对象,迭代器对象既内置__iter__又__next__方法的对象。迭代器的使用,例:

dic={a:1,b:2,c:3}
iter_dic=dic.__iter__() 

print(iter_dic.__next__()) #等同于next(iter_dic)
print(iter_dic.__next__()) #等同于next(iter_dic)
print(iter_dic.__next__()) #等同于next(iter_dic)
print(iter_dic.__next__()) #抛出异常StopIteration,或者说结束标志

  三、生成器

所谓生成器:在 Python 中,使用了 yield 的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。调用一个生成器函数,返回的是一个迭代器对象。例:

def func():
    print(====>first)
    yield 1
    print(====>second)
    yield 2
    print(====>third)
    yield 3
    print(====>end)
g=func()
print(g) 

 

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

Python学习之三大名器-装饰器迭代器生成器

Python学习之迭代器与生成器

python学习之迭代器与生成器

草根学Python 迭代器和生成器

python学习之-生成器

python学习之生成器(generator)