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

问题描述

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

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

解决方法

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

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)

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...