首页 > 解决方案 > 如何在循环中每 x 步创建一个新列表?

问题描述

我正在 python 上绘制一些随机游走函数并尝试创建它,以便它每 1000 步获取随机游走的位置,然后将它们绘制在直方图中。我意识到我每次都可以为 n=1000,2000 等创建一个新列表,只需将 walk 的值附加到该列表,但是有没有办法让 python 每 1000 步创建一个新列表?

import numpy as np 
import matplotlib.pyplot as plt

def random_walk(N,d):       
    walk = d*np.cumsum(2*np.random.binomial(1,.6,N)-1)
    return walk
n1=[]
n2=[]
n3=[]
n4=[]
n5=[]

for k in range(5000):
    particular_walk = random_walk(5000,2)
    n1.append(particular_walk[1000])
    n2.append(particular_walk[2000])
    n3.append(particular_walk[3000])
    n4.append(particular_walk[4000])
    n5.append(particular_walk[-1])


plt.hist(n1,bins=20,histtype='step',density=True)
plt.hist(n2,bins=20,histtype='step',density=True)
plt.hist(n3,bins=20,histtype='step',density=True)
plt.hist(n4,bins=20,histtype='step',density=True)
plt.hist(n5,bins=20,histtype='step',density=True)
plt.show()

这是我到目前为止的代码,但我意识到它不起作用。我知道我可以有一个名为“中点”的列表,并将其设置为 2500 处特定步行的位置,但有没有办法自动完成?

标签: pythonlistnumpyhistogramrandom-walk

解决方案


也许您可以使用 python 字典并在字典中创建列表。

它可能是这样的:

if k%1000 == 0:
    rw_dict[str(k/1000)]=[]

其中 str(k/1000) 只是字典中键的名称:1.0、2.0 等。每当您需要对该特定列表进行操作时,都可以使用 rw_dict[list_name] 访问该列表。

我希望这有帮助!


推荐阅读