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)
|
||
|
||
|
||
|