gpt4 book ai didi

functional-programming - Mathematica 相当于 Ruby 的 inject

转载 作者:行者123 更新时间:2023-12-04 08:42:55 25 4
gpt4 key购买 nike

在 Ruby 中是否有类似 inject 的 Mathematica 函数?例如,如果我想要列表中元素的乘积,在 Ruby 中我可以这样写:

list.inject(1) { |prod,el| prod * el }

我发现我可以在 Mathematica 中使用 Product:

Apply[Product, list]

但是,这对我来说不够通用(例如,如果我不只是想要数字的乘积或总和)。 inject 最接近的等价物是什么?

最佳答案

等价于Fold .我认为这更通常称为“reduce”——无论如何这是 Python 名称。

翻译你的例子:

Fold[#1*#2&, 1, list]

那个 #1*#2& 是一个二元 lambda 函数,它乘以它的参数。在这种情况下,您可以改用 Times:

Fold[Times, 1, list]

或者当然只是将 Times 应用于列表:

Apply[Times, list]

或者,简而言之:

Times @@ list

注意:您问题中使用 Product 而不是 Times 的版本将不起作用。 Product用于其他用途,即 Sum 的模拟.

关于functional-programming - Mathematica 相当于 Ruby 的 inject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2962464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com