代码之家  ›  专栏  ›  技术社区  ›  Sophie Alpert

Mathematica相当于Ruby的inject

  •  3
  • Sophie Alpert  · 技术社区  · 16 年前

    inject 用红宝石?例如,如果我想要列表中元素的乘积,我可以用Ruby编写:

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

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

    Apply[Product, list]
    

    注入 ?

    1 回复  |  直到 16 年前
        1
  •  7
  •   dreeves    16 年前

    等价物是 Fold . 我认为这更典型地被称为“reduce”——这就是Python的名字。

    翻译你的例子:

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

    那个 #1*#2& 在这种情况下,你可以使用 Times

    Fold[Times, 1, list]
    

    当然也可以直接申请 到列表:

    Apply[Times, list]
    

    或者,简而言之:

    Times @@ list
    

    注意:问题中使用产品而不是时间的版本将不起作用。 Product Sum .