如何平均函数

时间:2016-10-11 07:58:30

标签: 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)] 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.

2 个答案:

答案 0 :(得分:1)

这是你想要的,你需要将返回值分配给变量以便以后访问它:

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))

答案 1 :(得分:0)

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

v_min_list = [flip_coin(coins) for i in range(n)]

然后我们可以找到这个答案的平均值Finding the average of a list

averag_v_min = sum(v_min_list) / float(len(v_min_list))