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)我该怎么做?
由于
答案 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对于更一般的情况很有用。即使不是非常必要,它们也有助于提高可读性。