Как взять элементы списка попарно?
У меня есть список из координат [0, 1, 2, 3, 1], как мне взять элементы из списка и попарно иx присвоить x и y? Чтобы в первом шаге x == 0, y == 1, потом x == 1, y == 2 и так далее. Какие методы использовать?
Ответы (3 шт):
Автор решения: Oopss
→ Ссылка
a=[0, 1, 2, 3, 1]
for x,y in zip(a[:],a[1:]):
print(x,y)
0 1
1 2
2 3
3 1
Stanislav Volodarskiy посоветовал не использовать не нужный срез в цикле т.е.
for x,y in zip(a,a[1:]):
чтобы не разбазаривать память.
Автор решения: gil9red
→ Ссылка
Через индексы:
a = [0, 1, 2, 3, 1]
for i in range(len(a) - 1):
x, y = a[i], a[i + 1]
print(x, y)
Результат:
0 1
1 2
2 3
3 1
Автор решения: Stanislav Volodarskiy
→ Ссылка
Что-то такое без дополнительных копирований:
a = [0, 1, 2, 3, 1]
it = iter(a)
next(it, None)
for x, y in zip(a, it):
print(x, y)
Следующий код выдаёт пары вообще на любом iterable:
import itertools
def pairs(seq):
it1, it2 = itertools.tee(seq)
next(it2, None)
return zip(it1, it2)