首页 > 解决方案 > 随机游走 Python 练习循环

问题描述

我正在做 python 练习,我无法完成它。我需要创建一个数组并填充 25 个数字,每个数字将是前一个数字和从集合中提取的值 (-5, 5) 的总和。

将 numpy 导入为 np 导入随机

def prog_list(mylist):
    mylist = [0]
    addlist = [-5,5]
    sum_list = 0
    for i in mylist:
        if len(mylist) < 25:
            sum_list = random.choice(addlist) + mylist[i-1]
            mylist.append(sum_list)
        else:
            return mylist
        
for x in prog_list(mylist):
    print(x)

当我打印 x 我有

IndexError: list index out of range

标签: pythonloopsrandom-walk

解决方案


这有效:

def prog_list(n):
    mylist = [0]
    #addlist = [-5,5]
    addlist = list(range(-5, 5+1))
    for i in range(1, n):
        _sum = random.choice(addlist) + mylist[i-1]
        mylist.append(_sum)
    return mylist

prog_list(25)

如果你想从 (-5, 5) 中提取任何整数,你需要这个: addlist = list(range(-5, 5+1))

有一种更简洁的方法可以做到这一点,您不必在每次迭代中都访问列表:

def prog_list(n):
    mylist = []
    _sum = 0
    #addlist = [-5,5]
    addlist = list(range(-5, 5+1))
    for i in range(n):
        mylist.append(_sum)
        _sum += random.choice(addlist)
    return mylist
        
prog_list(25)

推荐阅读