Python 3.x Python:修改函数中的deque

Python 3.x Python:修改函数中的deque,python-3.x,deque,Python 3.x,Deque,我知道可以使用赋值修改函数内的列表,如下所示lis[:]=new_list,但是问题是,是否可以修改函数内的deque,因为它也是可编辑的? 当然,在函数中不使用return 不能使用'deq[:]=new_deq',因为它会产生以下错误:TypeError:sequence index必须是整数,而不是'slice'deque不支持将slice作为索引,因此要使用deque实现lis[:]=new_list的效果,可以在扩展它之前先清除它: from collections import de

我知道可以使用赋值修改函数内的列表,如下所示
lis[:]=new_list
,但是问题是,是否可以修改函数内的deque,因为它也是可编辑的? 当然,在函数中不使用
return


不能使用'deq[:]=new_deq',因为它会产生以下错误:
TypeError:sequence index必须是整数,而不是'slice'
deque
不支持将slice作为索引,因此要使用
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)

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

这里有问题吗?我相信这是肯定的,并且可以在几秒钟内通过交互式会话进行验证。请确保使用数据类型的操作。@BenY检查我的editsAh,这样更清楚。谢谢,看来有人已经回答了。这样效率高吗?在性能方面@blhsingYes它的效率与成本为O(n)的新列表一样高。