我正在解决一个编程问题,需要从数组/列表的任何给定位置开始迭代,直到达到起始位置。我考虑过类似循环缓冲区(双向队列)的方法,但不确定是否有一种迭代方法可以实现这个操作。
给定:
[1,10,20]
当我从位置1开始迭代时,我希望迭代的输出结果为:
我的当前解决方案:10、20、1
startPosition = 1
data = [1,10,20]
for i in range(0, 3):
pos = (startPosition+i)%3
print data[pos]
还有其他更优雅的解决方案吗?或者有没有一个容器可以做到这一点?
研究:
我发现itertools中的cycle可以实现循环,但这是一个无限循环。我需要使用next方法来获取并停止在正确的位置。Python中的循环列表迭代器
data[startPosition:] + data[:startPosition]
代替。 - Jose Ricardo Bustos M.