• 技术文章 >Python技术 >Python基础教程

    python生成器切片的实现

    小妮浅浅小妮浅浅2021-05-10 09:53:05原创4015

    (推荐操作系统:windows7系统、Python 3.9.1、DELL G3电脑。)

    1、想得到一个由迭代器生成的切片对象,但是标准切片操作并不能做到。函数 itertools.islice() 正好适用于在迭代器和生成器上做切片操作。比如:

    >>> def count(n):
    ...     while True:
    ...         yield n
    ...         n += 1
    ...
    >>> c = count(0)
    >>> c[10:20]
    Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
    TypeError: 'generator' object is not subscriptable
     
    >>> # Now using islice()
    >>> import itertools
    >>> for x in itertools.islice(c, 10, 20):
    ...     print(x)
    ...
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    >>>

    2、迭代器和生成器不能使用标准的切片操作,因为它们的长度事先我们并不知道(并且也没有实现索引)。函数 islice() 返回一个可以生成指定元素的迭代器,它通过遍历并丢弃直到切片开始索引位置的所有元素。然后才开始一个个的返回元素,并直到切片结束索引位置。

    这里要着重强调的一点是 islice() 会消耗掉传入的迭代器中的数据。必须考虑到迭代器是不可逆的这个事实。所以如果你需要之后再次访问这个迭代器的话,那你就得先将它里面的数据放入一个列表中。

    以上就是python生成器切片的实现,希望能对大家有所帮助。更多Python学习指路:python基础教程

    专题推荐:python生成器切片
    上一篇:python如何使用__iter__()展现外部状态 下一篇:python中contextmanager装饰的方法

    相关文章推荐

    • python返回函数有什么作用?• python异常处理的流程是什么?• python生成器函数的特点• python中yield的使用注意• python生成器调用方法引发异常• python生成器如何进行解析• python如何使用__iter__()展现外部状态

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网