2014-09-03 70 views
3

在Python中,是否有一种简单的方法将单个数字的列表添加到其他列表的单个数字中?在我的代码,我需要以类似的方式增加约10一长串这样的:Python将数字列表与其他数字列表相加

listOne = [1,5,3,2,7] 
listTwo = [6,2,4,8,5] 
listThree = [3,2,9,1,1] 

所以我希望得到的结果是:

listSum = [10,9,16,11,13] 

在此先感谢

+2

作为一般规则,它总是好来发表您当前的代码,所以我们知道你已经尝试过什么,没有工作,为什么它没有工作。 – 2014-09-03 09:23:53

+0

非常优雅的解决方案,谢谢 – Adam 2014-09-03 09:26:53

回答

7

使用zipsumlist comprehension

>>> lists = (listOne, listTwo, listThree) 
>>> [sum(values) for values in zip(*lists)] 
[10, 9, 16, 11, 13] 
+1

,远胜于我即将发布的内容! – 2014-09-03 09:23:16

+0

我不确定,但自发布问题起我就搭上了。我做了这个map(总和,zip(*(listOne,listTwo,listThree)))'输出'[10,9,16,11,13]'现在我也使用你的代码,输出是'[[ 10,9,16,11,13]'但* not *'[10,10,9,11,13]'我失踪了? – 2014-09-03 09:32:40

+0

@Grijesh,我没有正确地在我的问题中添加数字,这是我粗心 – Adam 2014-09-03 09:35:31

1

或者,你也可以使用mapzip如下:

>>> map(lambda x: sum(x), zip(listOne, listTwo, listThree)) 
[10, 9, 16, 11, 13] 
+0

实际上只是'map(sum,zip(listOne,listTwo,listThree))'很好,你可以去掉lambda函数。 – 2014-09-03 09:43:18

+0

在python 3中,这将返回一个迭代器。 – Vincent 2014-09-03 09:46:59