python生成器切片的实现
发布时间:2024-08-27 13:53:44

(推荐操作系统:windows7系统Python 3.9.1、DELL G3电脑。)
1、想要一个由迭代器生成的切片对象,但是不能做标准的切片操作。函数 itertools.islice() 适用于迭代器和生成器上的切片操作。例如:
>>>defcount(n): ...whileTrue: ...yieldn ...n+=1 ... >>>c=count(0) >>>c[10:20] Traceback(mostrecentcalllast): File"<stdin>",line1,in<module> TypeError:'generator'objectisnotsubscriptable >>>#Nowusingislice() >>>importitertools >>>forxinitertools.islice(c,10,20): ...print(x) ... 10 11 12 13 14 15 16 17 18 19 >>>
2、迭代器和生成器不能使用标准的切片,因为我们事先不知道它们的长度(也没有索引)。函数 islice() 返回一个可以生成指定元素的迭代器,它通过遍历和丢弃所有元素,直到切片开始索引位置。然后开始一个接一个地返回元素,直到索引位置结束。
这里要强调的一点是, islice() 它会消耗传输到的迭代器中的数据。必须考虑到迭代器是不可逆转的事实。因此,如果您需要以后再次访问迭代器,您必须首先将其中的数据放入列表中。
以上是python生成器切片的实现,希望对大家有所帮助。更多多Python学习指导:python基础教程
