Python 如何对函数的输出值求平均值

Python 如何对函数的输出值求平均值,python,iteration,average,Python,Iteration,Average,我对python比较陌生,所以我为我的代码中的任何不合常规之处道歉。 我有一个函数,它返回一些值。我想重复这个函数n次,并得到n次迭代的输出值的平均值(可能不定义新函数)。如何做到这一点?例如: def flip_coin(coins): pr_head = 1 pr_tail = -1 options = (pr_head, pr_tail) simulation = [[random.choice(options) for x in range(10)] f

我对python比较陌生,所以我为我的代码中的任何不合常规之处道歉。 我有一个函数,它返回一些值。我想重复这个函数n次,并得到n次迭代的输出值的平均值(可能不定义新函数)。如何做到这一点?例如:

def flip_coin(coins):

    pr_head = 1
    pr_tail = -1
    options = (pr_head, pr_tail)
    simulation = [[random.choice(options) for x in range(10)] for y in range(coins)]

    rep = [i.count(1) for i in simulation]
    m = min(rep)
    ind_m = rep.index(m) 

    c_min = simulation[ind_m]
    v_min = c_min.count(1) / 10

    return v_min

for i in range(n):
    flip_coin(coins)
    #take average over(v_min)
但是,我无法访问函数作用域之外的“v_min”,当我在函数内部迭代函数时(精确的for循环如上所述),我会得到错误:

RecursionError: maximum recursion depth exceeded while calling a Python object.

如果您希望这样做,则需要将返回值分配给变量,以便以后访问:

for i in range(n):
  v_min2 = flip_coin(coins)
  print v_min2
如果希望平均每次调用函数的时间,只需执行以下操作:

average_list = []
for i in range(10):
  average_list.append((flip_coin(coins)))

print (sum(average_list)/len(average_list))

您没有分配函数调用结果。首先收集所有函数调用,以便计算它们的平均值

v_min_list = [flip_coin(coins) for i in range(n)]
然后我们可以用这个答案找到平均值


您没有从函数
foo
返回任何值,默认为
None
。如果实际代码最小,请发布。如果不是,则创建一个最小版本。同时发布完整的回溯,或者在递归错误的情况下,发布回溯的相关部分。如果不返回函数外的部分输出(+其他一些情况),您也将无法访问该函数外的部分输出,至少在没有调试器的情况下…你必须包含-这比实际代码要少,但比你包含的代码要多。return
x
而不仅仅是
return
我按要求发布了实际代码@IljaEverilä
averag_v_min = sum(v_min_list) / float(len(v_min_list))