一次更改列表中的所有项目

时间:2018-10-12 09:12:16

标签: python list matplotlib

我正在尝试在Python中创建一个简单的“盒子中的粒子”,其中多个粒子在边界之间来回反弹。 我需要跟踪粒子的de x-pos和y-pos以及速度的x和y分量,以将它们绘制在最后。

根据每个dt,程序将计算新位置。我不想一次遍历每个粒子,而是想一次更新整个列表。否则,计算和替换将永远花费更多的粒子。 @ user17670已经询问了此question。但是,我每步都要计算每个值。这不同于将项目更改为预定值。

那么,在计算新值之后如何在列表中一次替换每个项目?

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

用于设置每个粒子速度的循环:

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 :(得分:0)

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包,您可以轻松地将数组加在一起或将它们与预定义值相乘。