вставка всех элементов из списка в указанный c индекс подсписка из второго списка - python 2 - PullRequest
1 голос
/ 17 июня 2020

У меня есть 2 списка, и для списка A, который состоит из подсписок, я хотел бы вставить все элементы из второго списка B в определенный c индекс внутри подсписок.

Эти два списка как парные,

A=[[[a, b], [c, d], [g, h]]
   [[e, f], [g, h], [t, f]]]

B=[[d, c], [e, j]]

Требуемый выход будет выглядеть следующим образом: каждый элемент из B добавлен на 2-ю позицию в A,

A=[[[a, b], [d, c], [c, d], [g, h]],
   [[a, b], [e, j], [c, d], [g, h]],
   [[e, f], [d, c], [g, h], [t, f]],
   [[e, f], [e, j], [g, h], [t, f]]] 

Итак, для каждого подсписка в A элементы из B добавляются во 2-е место в A. Я уверен, что нужно «копировать» элементы, поскольку каждый подсписок в A нужно скопировать, чтобы учесть 2 разных элемента в B, но я не уверен, как go кодировать это. Любой вклад приветствуется.

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

Надеюсь, вы оцените полчаса, которые я вложил в это однострочное решение:

[*map(lambda a, b: (a[0], b, a[1:]), *([i for s in [*map(lambda x: (x, x), A)] for i in s], B*2))]
[(['a', 'b'], ['d', 'c'], [['c', 'd'], ['g', 'h']]),
 (['a', 'b'], ['e', 'j'], [['c', 'd'], ['g', 'h']]),
 (['e', 'f'], ['d', 'c'], [['g', 'h'], ['t', 'f']]),
 (['e', 'f'], ['e', 'j'], [['g', 'h'], ['t', 'f']])]
1 голос
/ 17 июня 2020

Это было забавное испытание! Хороший вопрос.

def insertInto(A,B,i) -> list:
    output_list = []
    for a_list in A:
        for b_list in B:
            new_list = a_list[::]
            new_list.insert(i-1,b_list)
            output_list.append(new_list)
    return output_list




A=[[["a", "b"], ["c", "d"], ["g", "h"]],
   [["e", "f"], ["g", "h"], ["t", "f"]]]

B=[["d", "c"], ["e", "j"]]

C=[[["a", "b"], ["d", "c"], ["c", "d"], ["g", "h"]],
   [["a", "b"], ["e", "j"], ["c", "d"], ["g", "h"]],
   [["e", "f"], ["d", "c"], ["g", "h"], ["t", "f"]],
   [["e", "f"], ["e", "j"], ["g", "h"], ["t", "f"]]]

assert insertInto(A,B,2) == C
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...