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)