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}} *)