首页 文章

如何使用每个元素(列表)创建一个2D列表是由另外两个列表的联合创建的?

提问于
浏览
0

我有两个清单:

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的新手

3 回答

  • 0

    如果您不想改变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
    

    另外一点:请按照@Patrick Artner的说明进行操作 . 否则,您的问题更有可能被拒绝投票,并可能导致您无法提出进一步的问题 .

  • 1

    从您的遗嘱( D[i] = D1[i] + D2[i] )直截了当,最简单的方法是使用理解列表 . Asumming len(D1) == len(D2) ,:

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

    会做的 .

  • 0

    试试这个:

    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 具有相同的长度,两者都将起作用 .

相关问题