2016-05-16 68 views
0

对于这个任务,我们被指导编写一个程序,该程序将列出两个列表并将相应的值添加在一起。例如,addTables([[1,8],[2,7],[3,6],[4,5]],[[9,16],[10,15],[11,14],[12,13]])应返回[[10, 24], [12, 22], [14, 20], [16, 18]]作业:如何将新列表拆分为与输入列表相同的长度?

我的代码是:

def addTables(list1, list2): 
    newlist = [] 
    for i in range(0, len(list1)): 
     for j in range(0, len(list1[0])): 
      x = ([list1[i][j] + list2[i][j]]) 
      newlist = newlist + x 
    return newlist 

这给了我所有的正确的价值观,但其显示为一个列表[10, 24, 12, 22, 14, 20, 16, 18]。我怎样才能保留原始列表的结构?

回答

2

为了使您的代码的工作,创造中间列表和添加他们:

def addTables(list1, list2): 
    newlist = [] 
    for i in range(0, len(list1)): 
     sublist = [] 
     for j in range(0, len(list1[0])): 
      x = list1[i][j] + list2[i][j] 
      sublist.append(x) 
     newlist.append(sublist) 
    return newlist 

或者,你也可以使用zip()

>>> l1 = [[1,8],[2,7],[3,6],[4,5]] 
>>> l2 = [[9,16],[10,15],[11,14],[12,13]] 
>>> [[sum(subitem) for subitem in zip(*item)] 
    for item in zip(l1, l2)] 
[[10, 24], [12, 22], [14, 20], [16, 18]] 
+1

你可以说保持甚至更多的他/她的代码'sublist = sublist + x',并且将这些parens放回'list1 [i] [j] + list2 [i] [j]'就像OP – mwm314

+0

那样工作!非常感谢! –

+0

@cadenceglorpon当然,很高兴帮助,请参阅http://stackoverflow.com/help/someone-answers。 – alecxe

相关问题