将函数列表应用于值的名称?

时间:2014-06-03 18:22:58

标签: python functional-programming

通常,您会考虑将一个函数应用于值列表,从而创建一个新列表(关联的Python函数为map)。但是,如果将函数列表应用于一个值,从而创建新值,该怎么办?例如:

allCaps = lambda s: s.upper()
exclaim = lambda s: s + '!'
quote = lambda s: '"' + s + '"'

funcs = [allCaps, exclaim, quote]
value = 'hello'
for f in funcs:
    value = f(value)
print(value) # "HELLO!"

这种操作是否有名称(类似于map,filter,reduce)?

1 个答案:

答案 0 :(得分:3)

您可以使用reduce(),只需通过' hello'作为初始(reduce(function, sequence[, initial]))值。:

>>> reduce(lambda x, y: y(x), funcs, 'hello')
'"HELLO!"'