首页 > 解决方案 > 如何使用 for 循环和两个列表找到差异并定义函数?

问题描述

我需要编写一个名为 var_fun 的函数,它返回列表的方差并使用 2 个列表进行测试。我实际上必须返回每个元素的标准偏差。list_1 = [8, 8, 3, 5, 5, 8, 1, 4, 8, 6, 3, 10, 9] list_2 = [8, 12, 3, 5, 5, 8, 1, 4, 8, 3、10、9]

这是我所做的代码,但它返回 <function var_func at 0x7f462679ad08> 我该如何解决这个问题?

def var_fun(x):
  for i in x:
    var = ((i - mean_fun(x))**2)
  return var_fun
print(var_fun(list_1))
print(var_fun(list_2))

这是我的意思:

def mean_fun(values) :
  length = len(values)
  total_sum = 0
  for i in range(length):
    total_sum += values[i]
    average = (total_sum/length)
  return round(average, 2)
print(mean_fun(list_1))
print(mean_fun(list_2))

输出应如下所示: [25.0, 9.0, 9.0, 4.0, 1.0, 1.0, 0.0, 4.0, 4.0, 4.0, 4.0, 9.0, 16.0] [28.41, 11.09, 11.09, 5.43, 1.77, 1.77, 2.79, 2.79 , 2.79, 7.13, 13.47, 32.15]

标签: pythonlistvariance

解决方案


在函数var_fun()中,返回var而不是var_fun。那应该可以解决问题。

您收到错误是因为您试图返回函数本身。

此外,这些行没有任何意义。您可以删除它们:

mean_fun = list_1
mean_fun = list_2

更好的选择:

https://numpy.org/doc/stable/reference/generated/numpy.var.html https://numpy.org/doc/stable/reference/generated/numpy.mean.html

看看上面的 numpy 函数,它们可以直接计算均值和方差。


推荐阅读