Отдельное добавление всех элементов списка ко всем элементам другого списка в python

#python #list

#python #Список

Вопрос:

Я работаю с двумя списками, оба с вложенными элементами внутри них, и я хотел бы создать один окончательный список, который объединяет все вложенные элементы. Как и два списка,

 A=[[["a1", "b1"]],[["a2", "b2"]]]
B=[[["a3", "b3"]],[["a4", "b4"]]]
 

и мне нужно найти способ отдельно добавить все элементы из списка B в элементы списка A.
Результат будет примерно таким,

 C=[[["a1", "b1"], ["a3", "b3"]],[["a1", "b1"], ["a4", "b4"]], [["a2", "b2"], ["a3", "b3"]],[["a2", "b2"], ["a4", "b4"]]]
 

Это способ, которым я пытался это решить, но он не дает правильного вывода.

 C=[]
for i in A:
    i[1].append([i[0] for i in B])
    C.append(i)
 

Любые предложения о том, как это сделать, были бы идеальными.

Ответ №1:

Используйте:

 A = [[["a1", "b1"]], [["a2", "b2"]]]
B = [[["a3", "b3"]], [["a4", "b4"]]]

C = []
for ai in A:
    for bi in B:
        C.append(ai   bi)
 

Или версия для понимания списка:

 A=[[["a1", "b1"]],[["a2", "b2"]]]
B=[[["a3", "b3"]],[["a4", "b4"]]]

C = [ai   bi for ai in A for bi in B]
print(C)
 

Вывод

  [[['a1', 'b1'], ['a3', 'b3']], [['a1', 'b1'], ['a4', 'b4']], [['a2', 'b2'], ['a3', 'b3']], [['a2', 'b2'], ['a4', 'b4']]]
 

В качестве альтернативы используйте itertools.product

 from itertools import product

A=[[["a1", "b1"]],[["a2", "b2"]]]
B=[[["a3", "b3"]],[["a4", "b4"]]]

C = [ai   bi for ai, bi in product(A, B)]
print(C)
 

Комментарии:

1. [a b for a in A for b in B] вы могли бы просто сделать это, без необходимости product и дополнительного импорта, хотя они эквивалентны.

2. Это прекрасно! Спасибо

Ответ №2:

Вы также могли бы сделать

 for i, j in A, B:
    C.append(i   j)