为什么这两个代码段会产生不同的结果?我假设列表理解创建一个新列表而不是修改其指定的变量。
JointJS
答案 0 :(得分:0)
在第二次尝试中,您正在使用此x[0:i]
,这是您通过每次迭代分配的相同numpy数组。这就是为什么它会得到不同的结果。
尝试这样的事情,
x = np.array([1, 1, 1, 1])
x_ = x[:]
for i in range(0, len(x)):
x[i] = 2 + x_[0:i] .dot(y[0:i])
列表理解将创建一个新数组
答案 1 :(得分:0)
你的第一行构建一个列表推导(一个临时变量),然后在完成所有计算后更改x。
您的基于循环的版本执行计算,更改x [0],然后返回以执行下一次计算。 x 现在已更改,因此计算的输入与第一个示例中的输入不同。
尝试另一种方式,你会看到差异。在现有代码的循环中添加 print(x) ,以获得良好的对比度。
{{1}}