如何在映射函数调用中解压缩参数元组?

时间:2018-11-02 06:41:51

标签: python

假设我们有一个函数sum取两个num并返回其和:

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
        routes.MapHttpRoute(
          name: "API",
          routeTemplate: "api/{controller}/{action}",
          defaults: new { action = "GetAgentId" }
      );

,我们想使用map来计算某个可迭代容器上的总和:

def sum(a, b):
    return a + b

它将引发异常:

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

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

sum(*(1,2))将正确返回。这是我的问题: 我们如何使用地图将这个元组优雅地传递给sum? 这是一个解决方案,但不尽如人意:

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

1 个答案:

答案 0 :(得分:6)

这正是starmap的用途:

from itertools import starmap

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