Преобразовать список после zip()

# изначально был список
list1 = [[0,0,1],[0,0,1],[0,0,1],[2,2],[1,2,3,4]]
result = []
    for element in list1:
        if len(element )!=2:
            result.append([[x, y] for x,y in zip(element , element[1:])])
        else:
            result.append(element )
print(result)
# 

Вывод

[[[0, 0], [0, 1]], 
[[0, 0], [0, 1]], 
[[0, 0], [0, 1]], 
[2, 2], 
[[1, 2], [2, 3], [3, 4]]]

Нужный вывод

[[0,0,1],[0,0,1],[0,0,1],[2,2],[1,2,3,4]]

Подскажите пожалуйста, получаю на входе такой вот список. Как привести его формат к изначальному? до того, как я применил zip(). На всякий случай уточню, что list1 подается каждый раз разный. Он берется из запроса через psycopg. Т.е просто убрать какие-то индексы не получится. В идеале какая-то проверка. Я пробовал через len(), но получается, что количество элементах в писке списков [[0, 0], [0, 1]], [2, 2] одинаковое и равно 2


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

isinstance определяет тип первого элемента списка:

def connect_one(lst):
    first = lst[0]
    if isinstance(first, list):
        return [first[0]] + [sublist[-1] for sublist in lst]
    return lst


def connect(lst):
    return list(map(connect_one, lst))


print(connect([
    [[0, 0], [0, 1]], 
    [[0, 0], [0, 1]], 
    [[0, 0], [0, 1]], 
    [2, 2], 
    [[1, 2], [2, 3], [3, 4]]
]))
$ python connect.py
[[0, 0, 1], [0, 0, 1], [0, 0, 1], [2, 2], [1, 2, 3, 4]]
→ Ссылка