我定義了兩個對象:數學沒有評估#1
f=x^2
g=x->#1
爲什麼會這樣:
f /. x -> #1 &[5]
給我預期的結果:
25
但這:
f /. g &[5]
給我:
#1^2
彷彿#1,沒有被評估爲5 請幫助。
我定義了兩個對象:數學沒有評估#1
f=x^2
g=x->#1
爲什麼會這樣:
f /. x -> #1 &[5]
給我預期的結果:
25
但這:
f /. g &[5]
給我:
#1^2
彷彿#1,沒有被評估爲5 請幫助。
您可以通過保持純功能組件一起工作。
f = x^2
g = x -> #1 &
f/. g[5]
要通過列表運行形成映射之前的功能。
f = x^2
g = x -> #1
list = {1, 2, 3, 4, 5};
b = Block[{a}, Function[f /. a] /. a -> g]
Map[b, list]
{1,4,9,16,25}
而對於評價的具體問題...
vars = {x, y};
f = x + y;
g = Table[vars[[i]] -> Slot[i], {i, 1, Length[vars]}];
b = Block[{a}, Function[f /. a] /. a -> g];
list = {{1, 2}, {3, 4}, {5, 6}};
Map[b[Sequence @@ #] &, list]
{3,7,11}
與嚮導先生的回答,這可以成爲:
vars = {x, y};
f = x + y;
g = Table[vars[[i]] -> Slot[i], {i, 1, Length[vars]}];
list = {{1, 2}, {3, 4}, {5, 6}};
Map[Evaluate[f /. g] &[Sequence @@ #] &, list]
{3,7,11}
好的,問題是:地圖[f /。 {x - >#1}&,list] – user1161552 2012-02-18 23:00:36
好的,問題是,我想要做這樣的事情:vars = {x,y}; F = X + Y; g =表[vars [[i]] - >槽[i],{i,1,長度[vars]}];列表= {{1,2},{3,4},{5,6}};地圖[f /。g&,list];並得到{5,7,11}這是因爲f會從用戶的一些表達式和變量列表,所以我不能硬編碼變量。 – user1161552 2012-02-18 23:06:56
太好了,謝謝。有一件事我不明白:你發送一個序列到塊b。所以序列被理解爲該塊的參數列表? – user1161552 2012-02-19 00:13:03
與Mathematica一樣,在Trace []中包裝你的表達式並檢查輸出在這裏很有指導意義。 – 2012-02-18 21:46:47
謝謝。但是,我如何修改聲明,讓我得到錯誤的結果,按預期工作?我真的是Mathematica的初學者,所以我不知道大多數事情。 – user1161552 2012-02-18 22:26:35