我有两个清单。例如,
list1 = ["7","3","19","5"]
list2 = ["3","15,"13","16"]
我想将这些数字加在一起,所以我得到另外四个数字。例如7+3
和3+15
的结果。
我的整体输出应为
["10","18","32","21"]
我已尝试使用for循环来执行此操作,而不是获取7+3 = 10
我获得7+3 = 73
。我也试过使用int()
方法,但是我收到了一个错误。
答案 0 :(得分:4)
在zip
内使用int
,str
和list 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']