动态更改列表时列表理解不起作用

时间:2017-02-08 19:44:20

标签: python list-comprehension

为什么这两个代码段会产生不同的结果?我假设列表理解创建一个新列表而不是修改其指定的变量。

JointJS

2 个答案:

答案 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}}