zoukankan      html  css  js  c++  java
  • 零基础学python-19.10 生成器是单迭代器

    这一章节我们来结束一下生成器是单迭代器,而不是多迭代器。

    我们在之前的章节已经提到过迭代器iter,他是支持多迭代器的

    例如:

    >>> string='abcde'
    >>> iter1=iter(string)
    >>> next(iter1)
    'a'
    >>> iter2=iter(string)
    >>> next(iter2)
    'a'
    >>> next(iter1)
    'b'
    >>> next(iter2)
    'b'
    >>> 

    从代码里面可以看到,iter1与iter2分别指向不同的迭代器,返回不同的结果

    >>> g=(x**2 for x in range(3))
    >>> next(g)
    0
    >>> iter(g)
    <generator object <genexpr> at 0x00BBF378>
    >>> iter(g) is g
    True
    >>> next(iter(g))
    1
    >>> 

    从上面的代码可见,生成器支持迭代协议,本身就是迭代器,而且只支持一次活跃迭代,不支持多迭代。

    我们下面将再举一个例子:

    >>> g=(x*4 for x in 'abcde')
    >>> next(g)
    'aaaa'
    >>> iter1=iter(g)
    >>> next(iter1)
    'bbbb'
    >>> iter2=iter(g)
    >>> next(iter2)
    'cccc'
    >>> 

    上面我们举的是生成器表达式的例子,同理,表达式函数也是一样

    >>> def test():
    	for x in range(5):
    		yield x
    
    		
    >>> g=test()
    >>> next(g)
    0
    >>> iter1=iter(g)
    >>> next(iter1)
    1
    >>> iter2=iter(g)
    >>> next(iter2)
    2
    >>> 

    而且,对于内置类型支持多迭代器,并且在一个迭代器中传递并反映它们的原处修改。

    >>> L=[1,2,3,4,5]
    >>> iter1=iter(L)
    >>> next(iter1)
    1
    >>> iter2=iter(L)
    >>> next(iter2)
    1
    >>> del L[2:]
    >>> next(iter1)
    2
    >>> next(iter1)
    Traceback (most recent call last):
      File "<pyshell#37>", line 1, in <module>
        next(iter1)
    StopIteration
    >>> next(iter2)
    2
    >>> next(iter2)
    Traceback (most recent call last):
      File "<pyshell#39>", line 1, in <module>
        next(iter2)
    StopIteration
    >>> 

    从上面的代码可以看见,当列表原处修改了,也会影响迭代器返回的值。

    总结,这一章节我们介绍了生成器是单迭代器

    这一章节就说到这里,谢谢大家

    ------------------------------------------------------------------

    点击跳转零基础学python-目录


     

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    ffmpeg+nginx+video实现rtsp流转hls流,通过H5查看监控视频
    视频支持拖动进度条播放的实现(基于nginx)
    nginx 点播mp4方法
    NGINX 添加MP4、FLV视频支持模块
    html5播放mp4视频代码
    ThreadPoolExecutor使用错误导致死锁
    Spring-Cloud-Gateway
    从0开始构建你的api网关--Spring Cloud Gateway网关实战及原理解析
    使用Consul做服务发现的若干姿势
    Consul 的安装与基本使用
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896710.html
Copyright © 2011-2022 走看看