впервые задаю вопрос здесь. Я пытаюсь создать несколько переменных в системе Mathematica, которые имеют одно и то же имя, за исключением числа после него. Например, если список, который я использую, имеет 7 членов, он будет содержать переменные: member1, member2, member3, member4 и т. д. Если это неясно, я оставил ниже пример того, как я хотел бы, чтобы это работало. Надеюсь, это простое решение!
list = {1,2,3,4,5}
For[i = 1, i < 6, i++,
member[i] = list[i]
]
Попробуй это
list = {1, 2, 3, 4, 5};
For[i = 1, i < 6, i++,
ToExpression["member"<>ToString[i]<>" = "<>ToString[list[[i]]]]]
с последующим
?member3
который должен показать вам, что member3 было присвоено значение 3
Это создает строку, а затем оценивает ее как строку кода.
Если list = {1, 2, "3", 4, 5}
этот метод установит не сохранять строковый тип.
@ChrisDengen Я полностью согласен с вашим комментарием, если вы измените то, о чем просили, вам часто придется менять ответ. В системе Mathematica почти всегда есть дюжина различных способов сделать что-либо, по крайней мере, некоторые из них будут иметь мало смысла или вообще не имеют смысла для нового пользователя, задающего очень простые вопросы.
Вы можете использовать Symbol
с Evaluate
.
list = {1, 2, 3, 4, 5};
For[i = 1, i < 6, i++,
Evaluate[Symbol["member" <> ToString[i]]] = list[[i]]
]
member3
3
В качестве альтернативы можно использовать Array
вместо For
.
Array[(Evaluate[Symbol["member" <> ToString[#]]] = list[[#]]) &, Length[list]]
И версия, которая очищает уже существующие значения.
Array[(With[{x = "member" <> ToString[#]},
Clear[x];
Evaluate[Symbol[x]] = list[[#]]]) &, Length[list]]
Этот вопрос больше подходит для mathematica.stackexchange. mathematica.stackexchange.com/questions/36886/… не отвечает на ваш вопрос?