im 试图在 python 中实现队列,enQueue 更新队列,但 im 对为什么 deQueue 不会更新队列感到困惑
def enQueue(toDo,myQueue):
myQueue += [toDo]
return myQueue
def deQueue(myQueue):
if myQueue != []:
return myQueue[1:]
def makeQueue():
return[]
def main()
football = event("10-10-2019","12:00","pitch")
enQueue(football, getdone)
print(getdone)
deQueue(getdone)
print(getdone)
两个 print 语句给出相同的输出
由于myQueue += [toDo]
是就地完成的,因此该操作的效果在函数调用后仍然存在。
deQueue
不会就地执行它,因此在进行调用后,您表示为列表的queue
尚未更新。
您需要决定是希望函数更改就地传递的队列,还是返回新队列。
如果需要就地方法,请使用 append
和 pop(0)
并返回None
(但请注意,当您使用列表表示队列时,pop(0)
为 O(n(。
在相反的阵营中,只需添加列表或将其切片并将其返回值分配给另一个名称。