如何在itertools.cycle函数中指定从何处开始
问题内容:
我需要遍历列表以开始1-4
使用之间的位置itertools
我可以遍历该列表
positions = itertools.cycle([1,2,3,4])
next(positions)
这确实会返回下一个位置,但是如果下次我需要从3开始时该怎么办?如何设置开始位置?
我需要经常更改开始位置,我不能只更改列表从3开始。
问题答案:
您无法设置起始位置;它总是在给定序列开始的地方开始。
在将循环用于任何需要的用途之前,您 可以
按照几个步骤进行移动。使用itertools.islice()
跳过一些项目:
from itertools import islice
starting_at_three = islice(positions, 2, None)
您传入可迭代的值,然后传入一个起始值和终止值;None
此处意味着islice()
迭代器永远持续下去,或者直到基础positions
迭代器用完为止。
演示:
>>> from itertools import islice, cycle
>>> positions = cycle([1, 2, 3, 4])
>>> starting_at_three = islice(positions, 2, None)
>>> next(starting_at_three)
3
>>> next(starting_at_three)
4
>>> next(starting_at_three)
1
另一种选择是按照不同的顺序传递;[3, 4, 1, 2]
例如,您可以传递。