在纯函数中嵌套使用Apply / Map / MapThread

时间:2013-04-12 18:07:37

标签: map wolfram-mathematica

1。我的主要问题

我有一个带有两个参数槽的函数。我不想将这个功能应用于2个不同长度的列表。我想在这个解决方案中:

Map[Map[f[# &, #], b] &, c]

但它不起作用。那是为什么?

示例

f[x_, y_] := Sin[x y]


  b = {1, 2}
  c = {1, 2, 3}

输出似乎非常接近我想要的但不够接近:

{{Sin[#1 &][1], Sin[#1 &][2]}, {Sin[2 (#1 &)][1], 
  Sin[2 (#1 &)][2]}, {Sin[3 (#1 &)][1], Sin[3 (#1 &)][2]}}

2。似乎我只需要把方括号中的&'s。

a)是这样吗?为什么呢?

b)我该怎么做?

由于

2 个答案:

答案 0 :(得分:0)

您可以使用Outer,如下所示:

Outer[Sin[#1 #2] &, {1, 2}, {1, 2, 3}]
(* {{Sin[1], Sin[2], Sin[3]}, {Sin[2], Sin[4], Sin[6]}} *)

答案 1 :(得分:0)

您可以使用两个arg形式的函数来命名其中一个参数..

Map[Map[Function[ci,f[ci, #]], b] &, c]

外部工作对于这个例子非常有用,但是命名的纯函数args对于更一般的情况很有用。即使不是非常必要,它们也有助于提高可读性。