Деление списка по 2 элемента, с дублированием предыдущего

Рейтинг: 0Ответов: 3Опубликовано: 03.05.2023

Как разделить список, на списки по два элемента, с дублированием предыдущего, например:

#На входе
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]

Ответы

▲ 4Принят

Есть простой способ через zip, правда на выходе будет список кортежей:

Spisok1=[0,6,7,14]
print(list(zip(Spisok1, Spisok1[1:])))

Вывод:

[(0, 6), (6, 7), (7, 14)]
▲ 4

Начиная с Python 3.10 в стандартном модуле itertools есть специальная функция для такого преобразования - pairwise:

import itertools

spisok1=[0,6,7,14]
print(list(itertools.pairwise(spisok1)))
▲ 1
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]