【发布时间】:2012-03-15 09:31:45
【问题描述】:
在此 Python 代码中考虑 splatter:
def splatter(fn):
return lambda (args): fn(*args)
def add(a, b):
return a + b
list1 = [1, 2, 3]
list2 = [4, 5, 6]
print map(splatter(add), zip(list1, list2))
在 n 个压缩序列上映射一个 n 元函数似乎是一个足够常见的操作,可能已经有一个名称,但我不知道在哪里可以找到它。它模糊地唤起了柯里化,似乎还有其他相关的以争论为中心的 HOF,我从未听说过。有谁知道这是否是“众所周知”的功能?在讨论它时,我目前被问题标题中使用的尴尬语言类型所困扰。
编辑
哇,Python 的 map 会自动执行此操作。你可以写:
map(add, list1, list2)
它会做正确的事,为您省去splatter您的功能的麻烦。唯一的区别是zip 返回一个列表,其长度是其最短参数的长度,而map 使用None 扩展较短的列表。
【问题讨论】:
标签: higher-order-functions splat