【问题标题】:How to make a 2D list with every element(list) is created by union of two other lists?如何制作每个元素(列表)的二维列表是由两个其他列表的联合创建的?
【发布时间】:2018-12-09 10:58:28
【问题描述】:

我有两个列表:

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

【问题讨论】:

  • D= [a+b for a,b in zip(D1, D2)]
  • I want to 陈述不会导致问题 - 如果您想尝试一下。如果您遇到具体问题 - 请告诉我们那个。照原样 - 这只是“给我问题的代码” - 你甚至没有显示你的 minimal reproducible example 试图解决它。
  • 查看how to ask 和on-topic 并关注tour。

标签: python python-3.x list nested-lists


【解决方案1】:

试试这个:

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 的长度相同,两者都可以工作。

【讨论】:

    【解决方案2】:

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

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

    会做的。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • @B.M. extend () 方法需要 O (n)。因此总共是 O (n^2)。欲了解更多信息,请参阅此处link
      • 我的理解是复杂度是 O[ len(D1)*len(D1[0])]。这里没有二次复杂度。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多