wolfram-mathematica - 如何为符号设置值

标签 wolfram-mathematica symbols

我想将值设置为变量列表,如下所示:

list[[1]] = 2

如果 list[[1]]a ,然后 a现在将等于 2。我怎样才能做到这一点?

最佳答案

好吧,让我们天真地尝试一下:

做一个列表:

In[1]:= ClearAll[list, a, b, c]; 
list = {a, b, c}; 

正如我们所期望的那样:
In[3]:= list
Out[3]= {a, b, c}

将第一个元素设置为 2:
In[4]:= list[[1]] = 2
Out[4]= 2

In[5]:= list
Out[5]= {2, b, c}

这不会影响:
In[6]:= a 
Out[6]= a

重新开始:
In[7]:= ClearAll[list, a, b, c]; 
list = {a, b, c}; 

In[9]:= list
Out[9]= {a, b, c}

问题是 Set (=) 有 HoldFirst作为它的一个属性,即,它不评估其左侧的第一个参数,并且赋值是对列表而不是在该位置的变量。但是您可以使用 Evaluate 强制评估:
In[10]:= Evaluate[list[[1]]] = 2
Out[10]= 2

现在列表似乎和以前一样:
In[11]:= list
Out[11]= {2, b, c}

但这只是因为 a 仍然存在并且得到了 2 的值(在之前的版本中 a 被 2 替换了):
In[12]:= a
Out[12]= 2

如果您现在将 a 设置为 3,您也会看到更改列表:
In[13]:= a = 3
Out[13]= 3

In[14]:= list
Out[14]= {3, b, c}

编辑

也许更接近您问题的措辞,您可以Map Set在列表中:
In[16]:= ClearAll[list, a, b, c]; 
list = {a, b, c}; 

In[18]:= Set[#, RandomInteger[10]] & /@ list
Out[18]= {4, 8, 1}

In[19]:= list    
Out[19]= {4, 8, 1}

In[21]:= {a, b, c}    
Out[21]= {4, 8, 1}

关于wolfram-mathematica - 如何为符号设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5708142/

相关文章:

regex - 使用正则表达式将 Excel 公式转换为 Wolfram Mathematica

wolfram-mathematica - 在 ListLogLogPlot 的刻度标签中强制使用科学记数法

wolfram-mathematica - 通过点 Mathematica 求函数

wolfram-mathematica - 求解二次方程组

mysql - 列名前的 SQL 语句中的 At-Sign

c++ - 为什么成员函数的符号很弱?

Ruby 语法,在符号中使用数字?

android - 为什么在Android Studio中构建Telegram4android返回错误找不到符号方法sqrt(float)?

wolfram-mathematica - 数学 : is it possible to put AxesLabel for 3D graphics at the end of the axes as in 2D?

java - Java-在getLegalMoves()中找不到符号