Я решаю проблему программирования, где мне нужно запустить в любом заданном положении в массиве/списке и повторить до тех пор, пока я не удалю исходную позицию. Я думал о круговом буфере, вроде подхода (dequeue), но я не уверен, есть ли итерационный метод, который делает это.Циркулярный итератор в Python
Дано:
[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, но это бесконечный loop.I придется использовать следующий метод, чтобы получить и остановку в правильном положении. Circular list iterator in Python
вы можете использовать 'data [startPosition:] + data [: startPosition]' вместо –