嵌套for循环将两个列表乘以两个变量python 3

时间:2017-11-17 02:39:14

标签: python python-3.x list for-loop nested

我将CSV文件导入Python,然后使用x和y值执行最小二乘回归。到目前为止,我的计划:

  • 打开CSV文件并以逗号分隔
  • 创建两个由X和Y组成的列表(分别为x_list和y_list)
  • 计算X的所有值的平均值,并对所有值进行相同的计算 Y的值(分别为x_avg和y_avg)

我无法找到斜率的分子:

  

总和((Xi-X avg)*(Yi-Y avg))

我使用嵌套的for循环但是我的m_num(斜率分子)得到的结果不正确。

def compute_numerator(x_list, y_list, x_avg, y_avg):
    m_num = 0                                                                                                                                 
    xi = []
    yi = []
    multiples = []
    xi = [(x - x_avg) for x in x_list]
    yi = [(y - y_avg) for y in y_list]
    for x in xi:
        for y in yi:
            multiples = [x * y]
    m_num = sum(multiples)
    print(m_num)
    return m_num

我需要m_num来返回(X - X的平均值)*(Y - Y的平均值)的所有值的总和

欢迎任何建议或批评!努力学习并获得良好的编程习惯。谢谢你的时间!

1 个答案:

答案 0 :(得分:2)

如果您希望x_list中的每个(x,y)值,y_list相互配对,则可行:

sum((x-x_avg)*(y-y_avg) for x, y in zip(x_list, y_list))

你的问题是你没有将它们配对,而是将每个x值与所有y值相加,如下所示:

sum((x-x_avg)*(y-y_avg) for x, y in x_list for y in y_list)