我正在尝试将对象追加到列表。但是,在第二个附加项之后,列表中的第一个项会更改。 你能告诉我如何使它工作吗?
如果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}}
答案 0 :(得分:0)
解决方案(或至少有效):
filters.append(TestClass(copy.deepcopy(x)))
(我想把头撞在墙上...)
编辑(性能更好-thx hpaulj):
filters.append(TestClass(copy.copy(x)))