有效地初始化deque



我使用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的每个元素的第三行都是一行0,而不仅仅是索引7

@MichaelSzczesny的评论是正确的答案,它似乎被删除了,所以我把它贴在这里:

from collections import deque
import numpy as np
my_deque = deque(maxlen=10)dims = (10, 20, 20)
my_deque.extend(np.ones(dims))

最新更新