Python3:追加列出两个for循环

时间:2018-09-27 07:02:27

标签: python-3.x numpy for-loop

我有以下代码,该代码最多可汇总从正态分布中抽取的100个随机数,直到达到-10或+10:

import numpy as np
mylist=[]
summ = 0
for x in range(100):
    i = np.random.randn()
    summ += i
    mylist.append(i)
    if summ < -10 or summ >10:
        break

现在我要运行500次,因此创建一个包含500个列表的列表,每个列表包含数字。我想到将其放入另一个for循环中:

for p in range(500):
    templist = []
    for x in range(100):
        i = np.random.randn()
        summ += i
        templist.append(i)
        if summ < -10 or summ >10:
            mylist.append(templist)
            break

除了我现在不知道如何将元素i添加到列表中...

更新:我更新了代码,因此首先将随机数添加到临时列表templist中,并且总和超出限制后,就会将该列表附加到{ {1}}。但是,仍然无法正常工作!

2 个答案:

答案 0 :(得分:1)

mylist = []
for p in range(500):
    new_list = []
    summ = 0
    for x in range(100):
        i = np.random.randn()
        summ += i
        new_list.append(i)
        if summ < -10 or summ >10:
            break
    mylist.append(new_list)

答案 1 :(得分:1)

您可以执行500次任何功能,并使用装饰器将结果保存在列表中。只需将您的功能放在一个函数中即可:

import numpy as np

def execute_500_times(func):

    def multiplying_func(*args, **kwargs):
        list_of_results = list()
        for _ in range(500):
            list_of_results.append(func(*args, **kwargs))
        return list_of_results

    return multiplying_func

@execute_500_times
def myfunc():
    mylist=list()
    summ = 0
    for x in range(100):
        i = np.random.randn()
        summ += i
        mylist.append(i)
        if summ < -10 or summ >10:
            break

    return mylist

result = myfunc()

这样做的一个优点是装饰器函数也可以重用于其他函数,而不仅仅是修改原始函数。