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



我有两个列表。例如

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()方法,但出现错误。

在列表推导中使用zipintstr

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

结果:

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

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

第一件事是将列表转换为整数。这是一种方法,也是我会使用的方法。

list1 = map(int, list1)

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

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

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

zip函数会将多个列表的元素"压缩"到组中。因此,您的列表将被压缩为元组,例如(7,3)(3, 15)等。带有双精度变量的循环每次都会解压缩这些元组,以便您在第一次迭代中获得l1 =7l2 =3,依此类推。

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

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

[int(x1) + int(x2) for x1,x2 in zip(l1, l2)]

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

使用 map 函数,您将从原始字符串列表["7","3","19","5"]中获得所需的 int 列表[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))]
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))]

我认为这符合您的要求。首先,我将列表转换为整数列表。我把它们拉在一起,把每对都加起来

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

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

迭代解决方案 (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]
可用于

添加任意数量的列表的函数。

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"]

相关内容

  • 没有找到相关文章

最新更新