gpt4 book ai didi

list - 使用字符串列表创建变量

转载 作者:行者123 更新时间:2023-12-04 17:27:29 26 4
gpt4 key购买 nike

我想知道是否可以使用字符串变量列表的内容来创建新变量。

举个例子:

str={"cow","monkey"}

这些字符串是从文件中提取的。现在我想把这些字符串当作一个变量来引用。所以变量 cow 可以设置为 {4,2,3}或其他任何东西。任何引用为 str[[1]]当然给出字符串“cow”。

任何线索还是这是一个坏主意?

当然,我可以在我已有的列表中添加信息,例如:
str={{"cow",{4,2,3}},{"monkey",{}}

但是我仍然无法直接将 cow 作为变量进行寻址。

最佳答案

最简单的方法是手动使用符号 cowmonkey而不是字符串:

In[309]:= 
cow = 1;
monkey = 2;
{cow, monkey}

Out[311]= {1, 2}

但这可能不是你问的。如果要自动将字符串转换为变量,则
你必须做的(如果我理解正确的话)是首先将你的字符串转换为符号,因为符号可以被赋值并用作变量:
Remove[cow,monkey];
str = {"cow", "monkey"};
str1 = ToExpression /@ str

{cow, monkey}

(我假设符号 cowmonkey 尚未使用/定义)。之后,您可以使用 this 的答案根据变量在 str1 中的位置分配给变量的问题.然而,这种方法的实用性也值得怀疑。

我认为最有意义的是创建所谓的 indexed variables , 如
myIndexedVar["cow"] = 1;
myIndexedVar["monkey"] = 2;

哪里 myIndexedVar本质上是一个键值对的哈希表,键是你的字符串,值是你想分配给它们的任何东西。如果需要,该过程可以自动化。

编辑

为了说明对这些变量的赋值,这里有一个函数可以自动执行:
assignVariables[varNames_List, values_List, hashName_Symbol ] /; 
Length[varNames] == Length[values] :=
MapThread[(hashName[#1] = #2) &, {varNames, values}];

以下是如何使用它:
In[316]:= assignVariables[str,{{4,2,3},{}},myIndexedVar]

Out[316]= {{4,2,3},{}}

In[317]:= myIndexedVar["cow"]

Out[317]= {4,2,3}

In[318]:= myIndexedVar["monkey"]

Out[318]= {}

但同样,这确实是一个哈希表,所以当重新表述为:“我想用字符串键创建一个哈希表时,你的问题对我来说最有意义。在 Mathematica 中最简单的方法是什么,添加键值配对并访问它们”。答案似乎是 - 索引变量,如上所示。您可能还会发现阅读 DownValues 很有用,因为这些提供了索引变量的机制。

关于list - 使用字符串列表创建变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6187385/

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