27 lines
874 B
Python
27 lines
874 B
Python
|
from itertools import islice
|
|||
|
|
|||
|
if __name__ == '__main__':
|
|||
|
# 在程序生成过程中,我们有时候需要做一些无限生成器,这些生成器往往需要切片使用
|
|||
|
def infinity_iterator(start):
|
|||
|
while True:
|
|||
|
yield start
|
|||
|
start += 1
|
|||
|
|
|||
|
# 无限生成器
|
|||
|
for i in infinity_iterator(0):
|
|||
|
print(i)
|
|||
|
break
|
|||
|
|
|||
|
# 想要对无限生成器进行切片,我们就需要使用itertools里的islice函数,记得这个函数也是左闭右开
|
|||
|
iterator= infinity_iterator(0)
|
|||
|
iter_10_20 = islice(infinity_iterator(0), 10, 21)
|
|||
|
for i in iter_10_20:
|
|||
|
print(i)
|
|||
|
# 注意!!!islice操作是通过丢弃索引序列前的元素实现的,返回的是一个一次性迭代器,被迭代过后元素就被消耗掉无了
|
|||
|
print("再次使用迭代")
|
|||
|
for i in iter_10_20:
|
|||
|
print(i)
|
|||
|
|
|||
|
|
|||
|
|