Преобразовать список после 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]]