You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python collections.deque.reverse()返回值不一致问题咨询

deque.reverse() 返回None的原因与代码差异解析

首先明确:deque.reverse() 是原地修改队列的方法,官方文档明确说明它的返回值始终是None,不存在“有时返回反转队列”的情况——你看到的差异只是代码逻辑的不同。

示例代码的逻辑

书中示例代码里,虽然把dequeObject.reverse()的返回值赋值给了retVal,但它并没有打印这个返回值,而是打印了原本的dequeObject。因为reverse()已经直接修改了原队列的内容,所以输出的是反转后的原队列,和返回值None无关。

你的代码问题

你写的代码里,错误地将reverse()的返回值(也就是None)赋值给了new_queue,然后直接打印new_queue,自然得到None。但实际上,原队列my_queue已经被reverse()原地反转了,只是你没打印它而已。

比如把你的代码修改一下,打印原队列就能看到结果:

from collections import deque

my_nums = (1,2,3,4)
my_queue = deque(my_nums)

print("反转前:", my_queue)
my_queue.reverse()  # 原地修改,无需接收返回值
print("反转后:", my_queue)

执行结果会是:

反转前: deque([1, 2, 3, 4])
反转后: deque([4, 3, 2, 1])

你用append添加元素的代码也是同样的问题:reverse()已经修改了原队列,但你打印的是返回值None,而非被修改后的原队列。

总结

  • 所有场景下deque.reverse()都返回None,不存在行为不一致的情况
  • 你和示例代码的核心差异是:示例打印的是被原地修改后的原队列,而你打印的是reverse()的返回值(None)

内容的提问来源于stack exchange,提问作者Pete

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 06:15:39