gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:23:48 29 4
gpt4 key购买 nike

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

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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com