Я думаю, что вы пытаетесь сделать:
lst = Tuples[{0, 1}, 4];
Table[Evaluate[Symbol["lst" <> ToString[i]]] = lst[[i]], {i, Length@lst}]
Так что
lst1 == {0,0,0,0}
Но это не полезный способ управления переменными в Mathematica.
Редактировать
Я попытаюсь показать вам, почему использование vars lst1,lst2 ..
бесполезно, и против - «путь Mathematica».
Mathematica работает лучше, применяя функции к объектам. Например, предположим, что вы хотите работать с EuclideanDistance
. У вас есть точка {1,2,3,4} в R 4 , и вы хотите вычислить ближайшую точку от вашего набора до этой точки.
Это легко сделать с помощью
eds = EuclideanDistance[{1, 2, 3, 4}, #] & /@ Tuples[{0, 1}, 4]
А расстояние до ближайшей точки просто:
min = Min[eds]
Если вы хотите узнать, какие точки являются ближайшими, вы можете сделать:
Select[lst, EuclideanDistance[{1, 2, 3, 4}, #] == min &]
Теперь попробуйте сделать то же самое с намеченными lst1,lst2 ..
назначениями, и вы найдете это, хотя и не невозможно, очень, очень запутанно.
Редактировать
Кстати, когда у вас есть
lst = Tuples[{0, 1}, 4];
Вы можете получить доступ к каждому элементу списка, просто набрав
lst[[1]]
и т.д.. В случае, если вам нужно зациклить. Но опять же, петли НЕ являются способом Mathematica. Например, если вы хотите получить другой список с нормализованными элементами, не зацикливайтесь и просто выполните:
lstNorm = Norm /@ lst
Что чище и быстрее, чем
Do[st[i] = Norm@lst[[i]], {i, 1, 16}]
Вы обнаружите, что определение понижающих значений (например, st [i]) выше) полезно при решении уравнений, но помимо того, что многие операции, которые в других языках выполняются с использованием массивов, в Mathematica лучше выполнять с использованием списков.
Редактировать
Ответ на ваш комментарий actually I need each element of array lst to find the value of function such as f[x,y,z,k]=x-y+z+k
. Такая функция может быть
(#1 - #2 + #3 + #4) & @@@ lst
или
(#[[1]] - #[[2]] + #[[3]] + #[[4]]) & /@ lst
Out:
{0, 1, 1, 2, -1, 0, 0, 1, 1, 2, 2, 3, 0, 1, 1, 2}
НТН!