#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)