从两个列表中将字符串添加为整数

时间:2015-06-15 09:30:59

标签: python integer

我有两个清单。例如,

list1 = ["7","3","19","5"]  
list2 = ["3","15,"13","16"]  

我想将这些数字加在一起,所以我得到另外四个数字。例如7+33+15的结果。

我的整体输出应为

["10","18","32","21"]

我已尝试使用for循环来执行此操作,而不是获取7+3 = 10我获得7+3 = 73。我也试过使用int()方法,但是我收到了一个错误。

7 个答案:

答案 0 :(得分:4)

zip内使用intstrlist comprehension

[str(int(x) + int(y)) for x, y in zip(list1, list2)]

结果:

['10', '18', '32', '21']

答案 1 :(得分:2)

首先,你有字符串列表(不是整数)。 "7"是一个字符串。如果您将其添加到"3",则会获得"73"7是一个整数。

首先要将列表转换为整数。这是实现目标的一种方式,也是我使用的方法之一。

list1 = map(int, list1)

这要求python在参数中的int的每个元素上调用list1函数,并将返回值赋给list1。同样适用于list2。完成后,您可以添加两个整数列表。

这可以通过多种方式完成。我是这样做的。

res = []
for l1, l2 in zip(list1, list2):
    res.append(l1 + l2)

zip功能将" zip"多个列表的元素组成组。因此,您的列表将被压缩为(7,3)(3, 15)等元组。具有double变量的循环将每次解包这些元组,以便您获得l1 =7和{{ 1}}在第一次迭代中等等。

求它们并将它们放回结果列表中。

有更简洁的方法可以做到这一点,但这很清楚。如果您有兴趣,请访问另一个。

l2 =3

答案 2 :(得分:1)

你的问题是你正在连接字符串。

使用map函数,您将从原始字符串列表[7,3,19,5]获得所需的int list ["7","3","19","5"]

然后您可以使用zip对两个数组求和。

list1 = ["7","3","19","5"]  
list2 = ["3","15","13","16"]  
print [x+y for x,y in zip(map(int, list1), map(int, list2))]

答案 3 :(得分:1)

list1 = ["7","3","19","5"]
list2 = ["3","15","13","16"]
print [str(x+y) for x,y in zip(map(int,list1),map(int,list2))]

答案 4 :(得分:0)

我认为这可以满足您的需求。 首先,我将列表转换为整数列表。我将它们拉在一起并取出每一对并总结它们

[str(sum(c)) for c in zip(map(int, list1),map(int, list2))]

使用sum比使用c [0] + c [1]

更好

答案 5 :(得分:0)

迭代解决方案( Python 2.x ):

from operator import add
from itertools import starmap, imap, izip, tee, chain


def pairwise(seq):
    a, b = tee(seq)
    next(b, None)
    return izip(a, b)


list1 = ["7", "3", "19", "5"]
list2 = ["3", "15", "13", "16"]
print list(starmap(add, pairwise(imap(int, chain(list1, list2)))))

输出:

$ python foo.py
[10, 22, 24, 8, 18, 28, 29]

答案 6 :(得分:0)

可用于添加任意数量列表的功能。

list1 = ["7","3","19","5"]  
list2 = ["3","15","13","16"] 

def stradd(*args):
    return [str(sum(map(int, x))) for x in zip(*args)]

print stradd(list1, list2)
  

['10','18','32','21']