我有一个涉及x1,x2,...,x100的表达式,我还有一个包含100个元素的列表lst
,如何将规则应用于此表达式以实现如下所示:
exp/.{x1->lst[[1]],x2->lst[[2]],...,x100->lst[[100]]}
谢谢!
答案 0 :(得分:6)
exp /. Table[Symbol["x" <> ToString[i]] -> lst[[i]], {i, 1, 100}]
所以你不需要写X1,X2,... X100
答案 1 :(得分:3)
您可以使用Thread
将规则应用于每对表达式:
Thread[{a, b, c} -> {1, 2, 3}]
答案 2 :(得分:2)
使用索引变量解决此类任务而不是生成不同Symbol
的列表更加简单和方便。这样:
listOfRules = Array[f@# :> list[[#]] &, {100}];
Short@%
=> {f[1]:>list[[1]],f[2]:>list[[2]],f[3]:>list[[3]],f[4]:>list[[4]],
<<92>>,f[97]:>list[[97]],f[98]:>list[[98]],f[99]:>list[[99]],f[100]:>list[[100]]}
如果您计划多次进行此类替换,则值得Dispatch
大量规则:
listOfRules = Dispatch@listOfRules;
替换可以照常进行:
expr /. listOfRules