Как объединить два списка списков поэлементно? - PullRequest
0 голосов
/ 07 апреля 2020

В Python я хотел бы объединить списки списков очень специфичным c способом, но я пока не смог его найти. Любые идеи приветствуются!

Со следующим вводом:

firstList = [[[1], [2], [3]], [[4], [5], [6]]]
secondList = [[[11], [12], [13]], [[14], [15], [16]]]

Я хотел бы получить следующий вывод:

[[[1, 11], [2, 12], [3, 13]], [[4, 14], [5, 15], [6, 16]]]

Я пытался:

[list(a) for a in zip(firstList, secondList)]

но это возвращает:

[[[[1], [2], [3]], [[11], [12], [13]]], [[[4], [5], [6]], [[14], [15], [16]]]]

Мне нужен желаемый вывод, чтобы получить правильный формат, чтобы можно было использовать функцию TimeSeriesKMeans() из модуля tslearn с временными рядами в 2 измерениях

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Поскольку у вас есть вложенные списки, вам нужно удвоить zip через ваш список. Вы можете сделать:

[[a + b for a, b in zip(x, y)] for x, y in zip(firstList, secondList)]

Код :

firstList = [[[1], [2], [3]], [[4], [5], [6]]]
secondList = [[[11], [12], [13]], [[14], [15], [16]]]

result = [[a + b for a, b in zip(x, y)] for x, y in zip(firstList, secondList)]
# [[[1, 11], [2, 12], [3, 13]], [[4, 14], [5, 15], [6, 16]]]
0 голосов
/ 07 апреля 2020

Вы также можете использовать itertools.chain:

from itertools import chain

result = [list(zip(chain(*l1), chain(*l2)))
          for l1, l2 in zip(firstList, secondList)]
...