Изменение всех элементов в списке одновременно - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь создать простую «Частицу в коробке» в Python, где несколько частиц подпрыгивают назад и вперед между границами.Мне нужно отслеживать de-pos и y-pos частицы и x- и y-компоненты скорости, чтобы построить их в конце.

По каждому dt программа вычислитНовая позиция.Вместо того, чтобы перебирать каждую частицу, я хочу обновить весь список сразу.В противном случае расчет и замены будут длиться вечно для большего количества частиц.Этот вопрос уже задан @ user17670.Тем не менее, я рассчитываю каждое значение каждого шага.Это отличается от изменения элемента на предварительно определенное значение.

Итак, как мне заменить каждый элемент сразу в списке после вычисления нового значения?

dt = 0.001
pos_x = []
pos_y = []
speed_x = []
speed_y = []

цикл For дляустановите скорость каждой частицы:

for i in range(5):
    alpha = random.random() * 360
    speed = 0.1 * random.random() * alpha
    speed_x.append(math.sin(speed))
    speed_y.append(math.cos(speed))
    pos_x.append(0.25)
    pos_y.append(0.75)

цикл For для обновления положения каждой частицы:

for n in range(5):
    pos_x[n] = pos_x[n] + speed_x[n] * dt
    pos_y[n] = pos_y[n] + speed_y[n] * dt

После этого я нанесу все точки и обновлю окно каждыйпауза, чтобы позволить им двигаться.Спасибо заранее.

1 Ответ

0 голосов
/ 12 октября 2018
import numpy as np

if __name__ == "__main__":

   pos = np.array([5,5,5,5,5])
   speed = np.array([2,2,2,2,2])

   new_pos = pos + speed * 0.01
   print(new_pos)

Вывод:

[5.02 5.02 5.02 5.02 5.02] *

С пакетом numpy вы можете легко добавлять массивы вместе илиумножьте их на предварительно определенные значения.

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