如何从两个不同的列表中添加两个值

时间:2016-12-21 09:52:31

标签: python list sum zip

编辑:我意识到了什么。当我阅读文件时,我不仅要阅读价值,还要阅读之前的标签!

我遇到了一些列表问题,我正在读取文件,结果放在datalist中。然后我尝试添加这些值,来自另一个列表的值。所以现在我有:

datalist = [['first','second','third','fourth','fifth'],[1,2,3,4,5]]
newData_list = [0,1,1,0,2]

我想:d​​atalist = [1,3,4,4,7]我这样做:

datalist= [some1, some2, some3]
newData_list=[thing1, thing2, thing3]
datalist = [sum(x) for x in zip(datalist, newData_list)]
#and already try these
#datalit = sum([datalist,newData_list], axis=0)
#datalist = map(sum, zip(datalist, newData_list))
#datalist=[x + y for x, y in zip(datalist, newData_list)]*  

根据我使用哪一行,我遇到了这些错误:

TypeError: unsupported operand type(s) for +: 'int' and 'list'
TypeError: can only concatenate list (not "int") to list

我使用csv.reader从文件中获取值。内容将作为列表保存在datalist中。我怎么能操纵datalist的第二个元素(一个有数字),我想我必须将列表类型转换为整数,它会起作用,但如何?谢谢 !

2 个答案:

答案 0 :(得分:0)

你可以使用map和zip来实现:

a = [1,2,3]
b = [4,5,6]
map(lambda (x,y): x+y,zip(a,b))

输出:

[5, 7, 9]

嗯,我也尝试过上面的代码,它正常工作。 所以你的问题应该是列表中的值。它们不是整数,但它们看起来更像是列表。

答案 1 :(得分:0)

我只是这样做,似乎有效:

datalist[1] = map(int, datalist[1])