List Mathematica:将函数应用于列表

List Mathematica:将函数应用于列表,list,function,map,wolfram-mathematica,List,Function,Map,Wolfram Mathematica,我有一个函数f[ud]。我的意图是将此函数应用于整个列表。 比如说,d={1,2,3,…},然后f[d]给我一个结果(一个数字或任何东西)。在这之前,一切都很清楚 现在让我们假设我有以下列表:p={l1,l2,l3,…} 有没有比Map更有效的方法来计算f[p],其中预期的结果是{f[l1],f[l2],f[l3],…} 例如,使用Sin[x]函数,将其映射到一个列表要比将列表放在其参数中慢得多。这似乎不适用于我的函数f[d]和列表列表p。我该怎么做才能让它工作?它会比地图快吗 为了让我自己更清

我有一个函数
f[ud]
。我的意图是将此函数应用于整个列表。 比如说,
d={1,2,3,…}
,然后
f[d]
给我一个结果(一个数字或任何东西)。在这之前,一切都很清楚

现在让我们假设我有以下列表:
p={l1,l2,l3,…}
有没有比Map更有效的方法来计算
f[p]
,其中预期的结果是
{f[l1],f[l2],f[l3],…}

例如,使用
Sin[x]
函数,将其映射到一个列表要比将列表放在其参数中慢得多。这似乎不适用于我的函数
f[d]
和列表列表p。我该怎么做才能让它工作?它会比地图快吗

为了让我自己更清楚,说

f[d_]:=Total[d]
Then, f[{a1,a2,a3}] gives me a1+a2+a3, as expected.
But, f[{{a1, a2, a3}, {b1, b2, b3}, {c1, c2, c3, c4}}] kills the machine.

谢谢大家!

当我更改您的代码时,它会给出:

     Total[{{a1, b1, c1}, {b1, b2, b3}, {c1, c2, c3}}]
     {a1 + b1 + c1, b1 + b2 + c2, b3 + c1 + c3}
当Total接受一个list参数时,它只添加成员,在您的例子中,它添加

    {a1, b1, c1},{b1, b2, b3}, {c1, c2, c3}
但是它们不是同一维度,所以你不能得到正确的答案

在这种情况下,应使用Map

    Map[Total,{{a1, b1, c1}, {b1, b2, b3}, {c1, c2, c3, c4}}]


对不起,Listable不在这里工作。。 如果有帮助的话,可以将map放入函数中

ClearAll[f]
f[d_List] := Map[ Total, d, {-2}]
f[{1, 2, 3}]
f[{{1, 2, 3}, {4, 5}}]
f[{{{1, 2, 3}, {4, 5}}, {{6}, {7, 8}}}]

(* 6 *)
(* {6, 9} *)
(* {{6, 9}, {6, 15}} *)

您是否需要类似于
Total[{{a1,a2,a3},{b1,b2,b3},{c1,c2,c3,c4},{2}]
?尝试使用listable属性:
SetAttribbutes[f,listable]
ClearAll[f]
f[d_List] := Map[ Total, d, {-2}]
f[{1, 2, 3}]
f[{{1, 2, 3}, {4, 5}}]
f[{{{1, 2, 3}, {4, 5}}, {{6}, {7, 8}}}]

(* 6 *)
(* {6, 9} *)
(* {{6, 9}, {6, 15}} *)