如何使每个元素(列表)的二维列表是由另外两个列表的并集创建的?

How to make a 2D list with every element(list) is created by union of two other lists?

我有两个列表:

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"," "],...]

请帮助我,我是新来的 python

如果不想修改D1,先把D1复制到D。然后在python中使用extend方法。它将 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

试试这个:

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

如果长度不同,它将削减其余部分并前进到 D1D2 的最小值。如果你想要相反的,使用 zip_longest,像这样:

from itertools import zip_longest

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

但如果 D1D2 的长度相同,两者都可以工作。

根据您的意愿 (D[i] = D1[i] + D2[i]),最简单的方法是使用理解列表。假设 len(D1) == len(D2),:

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

会完成任务的。