如何在map函数调用中解压参数元组?

3
假设我们有一个函数sum,它接受两个数字并返回它们的和:
def sum(a, b):
    return a + b

我们想要使用map函数来计算可迭代容器中的总和:

map(sum, [(1, 2), (3, 4)])

这将引发一个异常:

TypeError: sum() takes exactly 2 arguments (1 given)

在这里发生的情况是对参数 (1, 2) 和 (3, 4) 调用了 sum,这给我们带来了一个错误。我们可以这样做:

sum(*(1, 2)) 将会正确返回。我的问题是: 我们如何优雅地使用 map 将此元组传递到 sum 中呢? 下面是一种解决方案,但不太符合我的要求:

map(lambda x: sum(*x), [(1, 2), (3, 4)])
1个回答

6

这正是starmap的用途:

from itertools import starmap

starmap(sum, [(1, 2), (3, 4)])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接