【问题标题】:Python reduce & Lambda with multiple params具有多个参数的 Python reduce 和 Lambda
【发布时间】:2019-03-28 21:04:23
【问题描述】:

有什么方法可以在 reduce(lambda f) 组合中使用 3 个变量,例如

reduce(lambda a, b, c : a*b+c, <list_for_a&b>, <range_for_c>)

我可以使用 map() 函数。但是想知道一种新的可能性,如果有的话。

【问题讨论】:

  • 来自文档:“将两个参数的函数从左到右累积应用于序列项,以将序列减少为单个值”。看来您在这里尝试做的是创建一个包含两个现有列表的新列表。这不是reduce 的用途。试试list comprehensions
  • 您能否发布“list_for_a&b”和“range_for_c”的示例值以及这些值的预期输出?

标签: python-3.x lambda reduce


【解决方案1】:

您可以压缩这两个序列,然后它们会处理结果。

values_for_a_and_b = ... # I assume this is a list of tuples
values_for_c       = ... #
product = zip(values_for_a_and_b, values_for_c)    # This gives a list like [((a, b), c)]

现在看起来您正在尝试制作地图,而不是减少。 您可以按如下方式使用该产品:

map(lambda x: x[0][0] * x[0][1] + x[1], product)

但是由于 Python 没有模式匹配,所以它并不是很优雅。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-09
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2017-03-24
    相关资源
    最近更新 更多