您有一个列表{{x -> 1}, {x -> 2}, {x -> 3},{x -> 4}},并且您想对该列表中的每个项目执行相同的操作,您想将{x -> n} 替换为n。
这是在 Mathematica 中很常见的事情。有一个函数Map 接受一个函数和一个列表,并对列表中的每个项目执行该函数。您可以在帮助页面中查找 Map 并尝试理解它。
您的列表中有Rule。所以你所拥有的是{{Rule[x,1]}, {Rule[x,2]}, {Rule[x,3]},{Rule[x,4]}},Mathematica 将其缩写为{x -> 1} 等。你可以在帮助系统中查找Rule 并尝试理解它。
让我们看看一种做你想做的事情的方法
sol = {{x -> 1}, {x -> 2}, {x -> 3}, {x -> 4}};
f[r_] := ReplaceAll[x, r];
Map[f, sol]
这定义了一个函数f,它使用x和一个单独的Rule来替换x中所有x的ReplaceAll函数,并且只有一个,其值为从那个规则。然后Map 一遍又一遍地执行此操作,直到它处理完列表中的所有项目。结果是{1, 2, 3, 4},这就是你想要的。
现在 Mathematica 的文化是您尝试缩写所有内容,您总是尝试使用少数标点符号而不是使用函数的名称。对于新用户来说,这可能很难理解。这是 Mathematica 用户可以用不同的方式编写它。
x/.#&/@{{x -> 1}, {x -> 2}, {x -> 3}, {x -> 4}}
这会给你同样的结果。您可以在帮助系统中查找 /. 和 # 和 & 和 /@ 并尝试理解这些内容。
在 Mathematica 中几乎总是有十几种不同的方法来完成任何事情。至少有几个几乎完全无法理解。如果可以的话,选择一种你认为自己理解并且可以记住和使用而不会犯太多错误的方式来做事。但这似乎成了一场比赛,看谁能用更少的字符完成某件事,或者谁能在几秒钟内完成这项工作。