Я хотел бы перебирать циклически по списку (или любой другой итерацию по этому вопросу), и я знаю, что вы можете сделать это с помощью функции cycle
из itertools
(как показано here), но эта функция работает бесконечно. Мне было интересно, есть ли разумный способ сделать это только один раз (и без использования оператора modulo).итерация «циклически» над итератора только один раз
Я имею в виду, что я хотел бы перебирать итерируемый таким образом, чтобы последний элемент был первым. Поэтому я хотел бы начать итерацию и прекратить всякий раз, когда итератор достигнет начала итерации.
Нечто подобное, но менее уродливым:
points = [1, 2, 3, 4, 5]
start = points[0]
iterator = cycle(points)
p = next(iterator)
while True:
print(p)
p = next(iterator)
if p == start:
print("quitting at", p)
break
один раз, вы имеете в виду одну копию? –
Можете ли вы привести пример? Если 'foo' реализует то, что вам нужно, каков будет выход' for x в foo ([1,2,3]): print (x) '? – arekolek
См. Обновленный вопрос. – aaragon