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

Python列表调用sort(reverse=True)打印返回None原因咨询

问题原因

Python列表的sort()方法属于原地修改操作:调用该方法时会直接调整原列表内部的元素顺序,不会生成、返回排序后的新列表,它的固定返回值为None。
你在代码里直接打印a.sort(reverse=True),本质是打印这个方法的返回值,自然得到None,并非sort方法没有执行排序逻辑。

你编写的第二段代码如下:

a = [] 
for i in range (100,200):
    if i % 12==0:
        a.append(i)
print(a.sort(reverse=True))
正确实现方式

有两种常见写法可以得到倒序输出的结果:

  • 方式1:先调用sort()完成原列表的排序,再打印列表本身
a = [] 
for i in range (100,200):
    if i % 12 == 0:
        a.append(i)
a.sort(reverse=True) # 原地完成倒序排列,修改原列表顺序
print(a) # 此时列表已经是倒序状态,打印可得到[192, 180, 168, 156, 144, 132, 120, 108],取索引0的元素就是目标值192
  • 方式2:使用内置函数sorted()实现排序,该函数不会修改原列表,会直接返回排序后的新列表,可以直接放在print语句中
a = [] 
for i in range (100,200):
    if i % 12 == 0:
        a.append(i)
print(sorted(a, reverse=True))

补充说明:你最开始写的print(a[-1])写法是效率最优的。因为循环是从小到大遍历100到199的整数,追加到列表中的12的倍数本身就是升序排列的,不需要额外做排序操作,直接取列表最后一个元素就能得到范围内最大的12的倍数192,省去了排序的额外开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:42:19