Как сделать двухмерный список с каждым элементом (списком), созданным объединением двух других списков? - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть два списка:

D1=[["a "," "," "," "," "," "],["b "," ","o"," "," "," "],["c ","x"," "," "," "," "],["d "," "," "," "," "," "],["e "," "," "," "," "," "]]

D2=[["a "," ","o"," ","x"," "],
["b "," "," "," "," "," "],["c "," "," "," "," "," "],["d "," "," "," "," "," "],["e "," "," "," "," "," "]]

D=[]

Я хочу сделать список D так, D[i]=D1[i] + D2[i], например, первый элемент (список) выглядит так:

D=[["a "," "," "," "," "," ","a "," ","o"," ","x"," "],...]

Пожалуйста, помогите мне, я новичок в питоне

Ответы [ 3 ]

0 голосов
/ 09 декабря 2018

Попробуйте это:

D = [i+j for i,j in zip(D1,D2)]

, если длины отличаются, остальное обрезается и продвигается к минимуму D1, D2.если вы хотите обратное, используйте zip_longest, например:

from itertools import zip_longest

D = [i+j for i,j in zip_longest(D1,D2)]

Но оба будут работать, если D1 и D2 имеют одинаковую длину.

0 голосов
/ 09 декабря 2018

Прямо от вашей воли (D[i] = D1[i] + D2[i]) самый простой способ - использовать списки понимания.Asumming len(D1) == len(D2),:

 D = [ D1[i] + D2[i] for i in range(len(D1)) ]

сделает работу.

0 голосов
/ 09 декабря 2018

Сначала скопируйте D1 в D, если вы не хотите изменять D1.Затем используйте метод extend в python.Он добавит все элементы list2 в list1.

Вот простой код: хотя временная сложность этого кода составляет O (n ^ 2), его можно улучшить.

D1=[["a "," "," "," "," "," "],["b "," ","o"," "," "," "],["c ","x"," "," "," "," "],["d "," "," "," "," "," "],["e "," "," "," "," "," "]]

D2=[["a "," ","o"," ","x"," "],
["b "," "," "," "," "," "],["c "," "," "," "," "," "],["d "," "," "," "," "," "],["e "," "," "," "," "," "]]

D = D1 [:]
for i in range (len (D)):
    D[i].extend (D2 [i])
print D

Дополнительный момент: Пожалуйста, следуйте инструкциям @Patrick Artner.В противном случае ваши вопросы с большей вероятностью будут отвергнуты и могут лишить вас возможности задавать дополнительные вопросы.

...