我有以下代码,该代码最多可汇总从正态分布中抽取的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}}。但是,仍然无法正常工作!
答案 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()
这样做的一个优点是装饰器函数也可以重用于其他函数,而不仅仅是修改原始函数。