首页 > 解决方案 > 通过 lambda 将 map 与 zip 结合起来

问题描述

我正在尝试编写一个添加二维向量的函数。我正在尝试组合该map()函数,使用该函数获取一个列表zip()(它将压缩 2 个元组)。

这是代码:

a = (1, 2)
b = (3, 4)
c = list(map(lambda x, y: x+y, list(zip(a, b))))
print(c)

所以我看到它的方式,zip(a, b)返回一个包含以下元组的 zip 对象:(1, 3), (2, 4)。然后将其转换为列表。我收到以下错误:

TypeError:()缺少1个必需的位置参数:'y'

所以我的猜测是 lambda 函数没有在每个元组中取第二个数字。

有没有办法做到这一点?

标签: python

解决方案


lambda 只有一个参数,例如:

c = list(map(lambda x: sum(x), zip(a, b)))

但是一旦我们使用 sum,我们可以像这样直接映射它:

c = list(map(sum, zip(a, b)))

测试代码:

a = (1, 2)
b = (3, 4)
c = list(map(sum, zip(a, b)))
print(c)

结果:

[4, 6]

推荐阅读