将对象追加到列表

时间:2019-09-28 16:17:40

标签: python

我正在尝试将对象追加到列表。但是,在第二个附加项之后,列表中的第一个项会更改。 你能告诉我如何使它工作吗?

如果numpy不是import numpy as np class TestClass: def __init__(self, x_in): self.x = x_in x = np.zeros((2, 1)) filters = [] x[0] = 1 filters.append(TestClass(x)) print(filters[0].x) x[0] = 2 filters.append(TestClass(x)) print(filters[0].x) print(filters[1].x) 数组而是简单的float变量,则可以使用。

[[1.]
 [0.]]

[[1.]
 [0.]]
[[2.]
 [0.]]

预期输出:

[[1.]
 [0.]]

[[2.]
 [0.]]
[[2.]
 [0.]]

实际输出(更改了第一项):

{{1}}

1 个答案:

答案 0 :(得分:0)

解决方案(或至少有效):

filters.append(TestClass(copy.deepcopy(x)))

(我想把头撞在墙上...)

编辑(性能更好-thx hpaulj):

filters.append(TestClass(copy.copy(x)))