我將如何處理將列表中的每個元素應用於函數中的每個參數?有點像Map
,除了可變數量的參數。將列表應用於Mathematica中的參數
因此,舉例來說,如果我有一個函數action[x1_,x2_,x3_]:=...
,我有一個列表{1,2,3}
,我將如何創建一個函數來調用action
與action[1,2,3]
?
我想這個功能能夠處理我改變action
到action[x1_,x2]
,和別的,也與現在的名單是{1,2}
,並且現在action[1,2]
調用動作。
我將如何處理將列表中的每個元素應用於函數中的每個參數?有點像Map
,除了可變數量的參數。將列表應用於Mathematica中的參數
因此,舉例來說,如果我有一個函數action[x1_,x2_,x3_]:=...
,我有一個列表{1,2,3}
,我將如何創建一個函數來調用action
與action[1,2,3]
?
我想這個功能能夠處理我改變action
到action[x1_,x2]
,和別的,也與現在的名單是{1,2}
,並且現在action[1,2]
調用動作。
基於「有點像地圖,除了可變數量的參數。」我想你可能會尋找到Apply
1級這是用做:
Apply[function, array, {1}]
或簡寫:
function @@@ array
這裏是做什麼的:
array = {{1, 2, 3}, {a, b, c}, {Pi, Sin, Tan}};
action @@@ array
{action[1, 2, 3], action[a, b, c], action[Pi, Sin, Tan]}
我上面使用的術語可能是誤導,並限制了Apply
的權力。您應用的表達式action
不需要是矩形陣列。它甚至不需要是List
:{...}
或者其元素是列表。下面是一個例子將這些可能性:
args = {1, 2} | f[a, b, c] | {Pi};
action @@@ args
action[1, 2] | action[a, b, c] | action[Pi]
args
是不是一個List
而是一組Alternatives
action
參數的數量而變化args
的元素之一有頭f
觀察到:
action
取代的args
每個元素,不管它可以是頭。args
頭部被保留在輸出中,在這種情況下Alternatives
(簡稱:a | b | c
)Apply[action, {1,2,3}]
這也可以輸入爲action @@ {1,2,3}
。
爲什麼不直接用行動[lst_ ListQ?]?
這是你要回答的問題嗎? – 2011-04-22 05:29:40
你的解決方案和Sasha的有什麼區別?我的意思是,我看到你的'@@@',而他的只有'@@'。他們怎麼可能是相同的? – 2011-04-21 22:33:09
@ d'o-o'b他們是不一樣的,但他們是相同的功能:'應用'。'f @@ {1,2,3}'給出'f [1,2,3]'實際上將'List'替換爲'Level 0'中的'f'(最高級別爲{1,2,3 }')。相比之下,'f @@@ {{1},{2},{3}}'給出{f [1],f [2],f [3]},用'f'代替'List'列表中的_element_或「Level 1」。這也可以通過使用'Apply [f,expression,levelspec]'來實現更深層次的表達式,但是沒有簡寫(比如'@@'或'@@@')。有關levelspec的詳細信息,請參閱Level的幫助。 – 2011-04-21 22:39:14
@Wizard:謝謝! – 2011-04-21 22:41:21