Python: 修改函数内部的双端队列

Python: modify a deque inside a function

我知道可以通过如下赋值来修改函数内部的列表lis[:] = new_list,但是问题是,是否可以修改一个deque 在函数内部,因为它也是可迭代的? 当然不在函数内部使用 return

无法使用 'deq[:] = new_deq ',因为它给出以下错误:TypeError: sequence index must be integer, not 'slice'

deque不支持切片作为索引,所以要用deque达到lis[:] = new_list的效果,可以先清空再扩展:

from collections import deque

def f(q, new_list):
    q.clear()
    q.extend(new_list)

d = deque([1, 2])
f(d, [2, 3])
print(d)

这输出:

deque([2, 3])

我也发现可以这样做:

def f(q, new_list):
   q.__init__(new_list)

它对我有用,但是我不知道这种方式是否有任何缺点。