Python`+ =`运算符和单行循环

时间:2019-05-22 07:34:17

标签: python for-loop syntax operator-keyword

weights是一个具有一定数量值的numpy数组,该数组将与x ^ i相乘。 在不对weights 的元素求和的情况下,如何在同一行的循环中重写此函数?

x = np.array([0,1,2,3])
weights = np.zeros(order + 1)

def estimate(weights, x):
    est = 0
    for i in range(len(weights)):
        est += weights[i] * x ** i
    return est

estimate(weights, x)

我想在一行中重写此函数,例如:

est = [(est + (weights[i] * x ** i)) for i in range(len(weights))]

但这不能给我正确的输出。我不明白的是,为什么这两个不相等。如何在一行for循环中处理+=?我现在可以使用另一个可能被我忽略的关键字吗?


编辑: 这实际上是正确的答案: est = sum([(weights[i] * (x ** i)) for i in range(order + 1)]) 我的代码中还有另一个错误,使我无法获得与该语句无关的正确结果。 对于所有的麻烦我深表歉意。

2 个答案:

答案 0 :(得分:1)

它只是该理解列表的元素之和:

est = sum([(weight * x ** i) for i, weight in enumerate(weights)])

答案 1 :(得分:1)

遵循单线操作即可满足您的需求:

est = sum([(weight * x ** i) for i, weight in enumerate(weights)])