2016-05-16 46 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

相關問題