python-生成器-迭代器

迭代器:

    迭代是python最强大功能之一,是访问结合元素的一种方法。

    迭代器是一个可以记住便利位置的对象。

    迭代器从集合地第一个元素进行访问,直到所有元素被访问完结束。迭代器只能往前不能后退。

    迭代器的两个基本方法iter()和next()。

字符串 列表  元组对象都可以用于创建迭代器:

   实例:

    list =[1,2,3,4]

    it = iter(list)                       #创建迭代器对象

    print(next(lt))                     # 输出迭代器元素

    1

扫描二维码关注公众号,回复: 1945403 查看本文章

迭代器可以使用for循环进行便利:

    list=[1,2,3,4]

    it =iter(list)               # 创建迭代器对象

    for i in it:                   # for 循环便利

          print(i)    

迭代器小结:
凡是可作用于for循环的对象都是Iterable(可迭代)对象。
凡是可作用于next() 函数的对象都是Iterator(迭代器) 类型,它们表示一个惰性计算的序列。
集合数据类型例如 list() dict() str() 等是Iterable(迭代对象),不过它们可以通过iter() 函数获得iterator(迭代器)对象。
python的for循环本质上就是通过不断调用next()函数实现的

生成器:

    在python中使用yield的函数被称之为生成器。

    和普通函数不一样的是,生成器是一个带有返回迭代器的函数,只能用于迭代器操作即生成器就是一个迭代器。

    在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象。

实例使用yield 实现斐波那契数列:

    


生成器小结:

只有在调用相对应时才会生成数据

生成器只能向前 不能向后 (只会记住当前位置)__next__ ()方法

    yield: 返回当前函数的值并且返回。
    send: 调用yield 并且给它传值。
    next: 是唤醒yield


猜你喜欢

转载自blog.csdn.net/buddhaisaboy/article/details/80847484