Деление списка по 2 элемента, с дублированием предыдущего
Как разделить список, на списки по два элемента, с дублированием предыдущего, например:
#На входе
Spisok1=[0,6,7,14]
#На выходе
S1=[0,6]
S2=[6,7]
S3=[7,14]
.
#На входе
Spisok2=[0,2,9,15,17]
#На выходе
S1=[0,2]
S2=[2,9]
S3=[9,15]
S4=[15,17]
Ответы (3 шт):
Автор решения: CrazyElf
→ Ссылка
Есть простой способ через zip, правда на выходе будет список кортежей:
Spisok1=[0,6,7,14]
print(list(zip(Spisok1, Spisok1[1:])))
Вывод:
[(0, 6), (6, 7), (7, 14)]
Автор решения: insolor
→ Ссылка
Начиная с Python 3.10 в стандартном модуле itertools есть специальная функция для такого преобразования - pairwise:
import itertools
spisok1=[0,6,7,14]
print(list(itertools.pairwise(spisok1)))
Автор решения: vadim vaduxa
→ Ссылка
def qwe(s, *pisok):
for x in pisok:
yield [s, x]
s = x
print(*qwe(0,2,9,15,17)) # [0, 2] [2, 9] [9, 15] [15, 17]