我正在使用
deque
来存储将要处理的数据。处理仅在双端队列已满时开始,因此第一步我按以下方式填充缓冲区:
from collections import deque
import numpy as np
my_deque = deque(maxlen=10)
dims = (20, 20)
my_deque.extend([np.ones(dims)] * 10)
但是,当我这样做并修改
my_deque
的其中一个元素时,my_deque
的所有元素都会被修改。
我发现避免此问题的一种替代方法是按以下方式初始化我的
deque
for i in range(10):
my_deque.append(np.ones(dims))
有没有更优雅的方法来实现这一点?
编辑:造成问题的一个修改示例如下
my_deque[7][2, :] = 0
在这行代码之后,
my_deque
的每个元素的第三行都是一行零,而不仅仅是索引 7 处的零
@MichaelSzczesny 的评论是正确的答案,它似乎已被删除,所以我将其发布在这里:
from collections import deque
import numpy as np
my_deque = deque(maxlen=10)
dimensions = (10, 20, 20)
my_deque.extend(np.ones(dimensions))