我有以下的「地圖」變量:枚舉「地圖」可變
permutation[100]=-2;
permutation[3]=-1;
permutation[19]=0;
permutation[-20]=1;
有沒有辦法來枚舉所有的值? 我不關心枚舉順序。 我的意思是這樣(不工作密碼):
Do[i+=3,{i,permutation}]
我告訴他們,「地圖」由C靈感變量++。什麼是他們的正確名稱,以找到更好的搜索結果?
我有以下的「地圖」變量:枚舉「地圖」可變
permutation[100]=-2;
permutation[3]=-1;
permutation[19]=0;
permutation[-20]=1;
有沒有辦法來枚舉所有的值? 我不關心枚舉順序。 我的意思是這樣(不工作密碼):
Do[i+=3,{i,permutation}]
我告訴他們,「地圖」由C靈感變量++。什麼是他們的正確名稱,以找到更好的搜索結果?
你所做的基本上定義了一個離散值的函數。如果你保持值的列表,你可以這樣做:
permutation[100] = -2;
permutation[3] = -1;
permutation[19] = 0;
permutation[-20] = 1;
vals = {100, 3, 19, -20}
使用這樣的:
f /@ permutation /@ vals -> {f[-2], f[-1], f[0], f[1]}
或循環..
Do[ Print[permutation[vals[[i]]]], {i, Length[vals]}]
有可能以更好的方法首先定義你的數據..
這裏是一個有時候很有用的技巧(只適用於正確的args)
permutation = SparseArray[{}, {200}, Null]
permutation[[100]] = -2;
permutation[[3]] = -1;
permutation[[19]] = 0;
f /@ Select[ permutation, ! (TrueQ[# == Null]) &]
out: {f[-1], f[0], f[-2]}
簡單,雖然是隻作排列的列表:
permutation={}
AppendTo[permutation,{100,2}]
AppendTo[permutation,{3,-1}]
然後做
f[#[[2]]]& /@ permutation -> {f[2],f[-1]}
oops,只是注意到你想改變循環中的值。以上所有可以做一些調整.. – agentp 2013-04-11 21:21:20
這是「元數學」 定義一個變量或函數內部存儲並且可以使用DownValues [] 來提取,因此,如果您想要爲其定義置換的「輸入值」集合,請使用
Cases[DownValues[permutation], permutation[x_] :> x, \[Infinity]]
與
{-20, 3, 19, 100}
胡達所得
置換[100] = -2; 置換[3] = -1; 置換[19] = 0; 置換[-20] = 1; DownValues [置換] – 2013-04-12 00:08:38