问题描述
我知道可以通过使用如下赋值来修改函数内的列表lis[:] = new_list
,但是问题是,是否可以修改 deque 在函数内部,因为它也是可迭代的?
当然不用在函数内部使用 return
。
不能使用 'deq[:] = new_deq ',因为它给出了以下错误:TypeError: sequence index must be integer,not 'slice'
解决方法
deque
不支持切片作为索引,所以要达到lis[:] = new_list
带deque
的效果,可以先清空再扩展:
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)
它对我有用,但我不知道这种方式是否有任何缺点。