2

私には機能がありますf[d_]。私の意図は、この関数をリスト全体に適用することです。と言うと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.

ありがとうございました!

4

2 に答える 2

1

コードを変更すると、次のようになります。

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

Total がリスト引数を取るとき, メンバーを追加するだけです. あなたの場合, 追加します.

    {a1, b1, c1},{b1, b2, b3}, {c1, c2, c3}

しかし、それらは同じ次元ではないため、正しい答えを得ることができません。

この場合、Map を使用する必要があります。

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

また

    Plus @@@ {{a1, b1, c1}, {b1, b2, b3}, {c1, c2, c3, c4}}
于 2013-06-21T09:33:37.130 に答える
0

申し訳ありません 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}} *)
于 2013-06-21T17:38:40.650 に答える