Шаг назад во время итерации
К примеру у меня есть код
l_iter = iter(l)
l_iter = iter(l)
for i in l_iter:
if i == 1 and next(l_iter) == *любое значение*:
*действие*
Так вот, уже при следующем i оно будет равно не 2, а 3 так как next(l_iter) перешло на следующий элемент. Можно как-то сделать шаг назад в итерации?
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Давайте оттолкнёмся от задачи: нужно перебрать последовательные пары из списка (или любой последовательности). К сожалению, в стандартной библиотеке такой функциональности нет. Справимся сами:
def pairs(seq):
it = iter(seq)
try:
prev = next(it)
except StopIteration:
return
for item in it:
yield prev, item
prev = item
Тест:
> print(tuple(pairs([1, 2, 3, 4])))
[(1, 2), (2, 3), (3, 4)]
Теперь ваша задача решается просто:
l = [0, 1, 2, 3, 4, 1, 2, 1]
for i, j in pairs(l):
if i == 1 and j == 2:
print('found')