【问题标题】:How to apply an array of functions to a value using list comprehension?如何使用列表理解将函数数组应用于值?
【发布时间】:2013-08-21 09:16:17
【问题描述】:

我有一个函数数组:

functions = [function_a,function_b,square,...,last_function]

我想在一行的变量中获取 function_a(function_b(square(...(last_function("hello"))..))) 的输出,用列表理解技巧替换点。

像这样:

tmp = input
for f in functions:
  tmp = f(tmp)
output = tmp

不使用tmp,在一行中。

【问题讨论】:

  • reduce(lambda x, y: x(y), [functions, ...]) 有效吗?只是猜测
  • 顺便说一句,你的代码是last_fuction(...(square(function_b(function_a("hello")))))。
  • 是的,你是对的。我知道这一点,但在我的问题中顺序并不重要。
  • 列表推导式创建一个列表;您实际上想将列表减少为单个值,这就是 reduce 所做的(Python 3 中的 functools.reduce)。

标签: python arrays function


【解决方案1】:
your_value = 3
result = reduce(lambda x, y: y(x), function_list, your_value)

例如:

>>> functions = [lambda x: x + 2, lambda x: x * 2]
>>> reduce(lambda x, y: y(x), functions, 1)
6

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 2013-07-25
    • 2015-08-25
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多