Python`+;=`操作员和回路单线

Python`+;=`操作员和回路单线,python,for-loop,syntax,operator-keyword,Python,For Loop,Syntax,Operator Keyword,weights是一个由一定数量的值组成的numpy数组,它被乘以x^i如果不对权重的元素求和,如何在一行for循环中重写此函数 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
是一个由一定数量的值组成的numpy数组,它被乘以x^i如果不对
权重的元素求和
,如何在一行for循环中重写此函数

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=范围内i的总和([(权重[i]*(x**i)])(顺序+1)])
我的代码中还有一个bug,它阻止我得到与此语句无关的正确结果。
我为所有的麻烦向您道歉。

这只是理解列表中元素的总和:

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

以下一行代码满足您的要求:

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

sum([(weight*x**i)代表i,枚举中的weight(weights)])
这不是你想要的吗?这并不是我想要的,我不想对整个列表求和。权重是一个数组。@AhmadMoussa alpert的一行代码和你的
估计值
函数是等价的(好吧…除了返回),那么它怎么做不到你想要的?(在前面的一段时间内重复deceze…)你是在寻找
=[…]
而不是
+=[…]
?注意,这似乎不是你的函数所做的。好吧,我很欣赏附加的上下文,但这还不够<代码>顺序是未定义的,即使它是未定义的(我在顶部尝试了
顺序=2
),也会得到一个类型错误,因为
[0,1,2,3]**0
无效。请确保发布的代码片段再现了您的问题。(随机猜测,可能您的意思是
x=np.array([0,1,2,3])
?)