Присвоить значения определенной позиции списка Python - PullRequest
0 голосов
/ 20 марта 2019

Я новичок в Python и, возможно, моя проблема очень проста.

Я создал список из 250 нулей с именами x , x = np.zeros(250), и у меня есть цикл, в котором я выполняю некоторые вычисления, на каждой итерации я создаю два x, например, в первой итерации x [0] и x [1] и т. Д. В списке с именем temp_x. то есть первый temp_x имеет x [0] и x [1]

Я хочу сохранить выходные данные в конце каждой итерации в соответствующих позициях x. Например, в конце первой итерации у temp_x есть два значения, которые я хочу присвоить им первым позициям x.

Что я делаю не так?

x[i, i+1] = x_temp

Ответы [ 3 ]

1 голос
/ 20 марта 2019

Как уже упоминалось в ответе @ IAmVisco, цепное назначение будет работать.

Однако, чтобы понять причину, по которой ваш код не работает:

Когда вы печатаете что-то вроде x[i, i+1], Pythonпонимает значение в квадратных скобках как tuple, и поэтому фактически пытается выполнить x[(i, i + 1)], который обращается к элементу в строке i и столбце i + 1.Поскольку такого элемента нет (x является одномерным массивом), он завершается ошибкой «слишком много индексов для массива».

Если вы действительно хотите получить доступ к двум (или более) элементам таким образом, ваши индексы должны быть в форме np.ndarray (list тоже будет работать):

>>> x = np.ones(10)
>>> x[np.array([0, 1])] = 2
>>> x
array([2., 2., 1., 1., 1., 1., 1., 1., 1., 1.])
1 голос
/ 20 марта 2019

Это должно работать просто отлично x[i] = x[i+1] = x_temp

0 голосов
/ 20 марта 2019

Я не уверен, что ответ IAmVisco сделает то, что требуется, вместо этого он установит оба элемента x в список x_temp.

Мне кажется, что вам нужно:

x[i], x[i+1] = x_temp

Распаковывает каждый элемент x_temp в каждый элемент x

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...