通常,您会考虑将一个函数应用于值列表,从而创建一个新列表(关联的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)?
答案 0 :(得分:3)
您可以使用reduce()
,只需通过' hello'作为初始(reduce(function, sequence[, initial])
)值。:
>>> reduce(lambda x, y: y(x), funcs, 'hello')
'"HELLO!"'