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)
它对我有用,但是我不知道这种方式是否有任何缺点。
我知道可以通过如下赋值来修改函数内部的列表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)
它对我有用,但是我不知道这种方式是否有任何缺点。