<p>我在Python中有一个deque,我正在迭代它。有时在我交互时,deque会发生变化,这会产生一个<code>RuntimeError: deque mutated during iteration</code>。</p>
<p>如果这是一个Python列表而不是一个deque,我只需要遍历列表的一个副本(通过像<code>my_list[:]</code>这样的切片,但是由于切片操作不能在deque上使用,我想知道处理这个问题的最Python的方法是什么?</p>
<p>我的解决方案是导入copy模块,然后遍历一个副本,比如<code>for item in copy(my_deque):</code>,这很好,但是由于我到处搜索这个主题,我想我会在这里发帖询问?</p>
<p>虽然您可以在deque中创建一个列表,<code>for elem in list(deque)</code>,但如果它是一个常用函数,则这并不总是最佳的:它会有性能开销,特别是如果deque中有大量元素,并且您不断地将其更改为<code>array</code>结构。</p>
<p>无需创建列表的一种可能的替代方法是使用带一些布尔变量的<code>while</code>循环来控制条件。这提供了O(1)的时间复杂性。</p>