[英]Class Initialization of a list of empty lists not updating
我有一个由 4 个具有设定长度的双端队列组成的列表。 我已经制作了该列表,希望它会像其他列表一样更新。 这是一个简单的例子:
class foo():
def __init__(self):
self.buffer_size = 300
self.a = collections.deque([0]*self.buffer_size, self.buffer_size
self.b = collections.deque([0]*self.buffer_size, self.buffer_size
self.c = collections.deque([0]*self.buffer_size, self.buffer_size
self.d = collections.deque([0]*self.buffer_size, self.buffer_size
self.buffers = [list(self.a), list(self.b), list(self.c), list(self.d)]
def do_something(self):
## here I append to these deques so that the values in them changes
for i in range(20):
self.a.append(i)
self.b.append(i)
def _buffers(self):
## buffers will still be all zeros
print(self.buffers)
F = foo()
F.do_something()
F._buffers()
我的问题是为什么它仍然只是零? 当其中的双端队列更改时,它为什么不更新? 关于如何实现这一点的想法?
原来问题在于我在 self.buffers 的初始化中将双端队列转换为列表。 我怀疑发生这种情况的原因是,当创建该列表时,它指向 memory 中完全不同的位置,并且不再受更改的影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.