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

Python初学者疑问:list.sort()与sorted()为何导致两段代码输出不同?

问题:两段Python代码为何输出不同?

我是一名Python初学者,疑惑为何以下两段代码会产生不同输出:

Program-1

l1 = [235, 300, 666, 788, 1092]
l2=sorted(l1)
if l1 == l2:
    print("List is in ascending order")
else:
    print("Not in ascending")

Program-2

if l1 == l1.sort():
    print("List is in ascending order")
else:
    print("Not in ascending")

我原本预期两段代码都会输出“List is in ascending order”,但Program-2进入了Else分支,这是为什么?


原因解析

核心是list.sort()和sorted()的返回逻辑不一样:

  • sorted(l1)是独立函数,它会生成一个新的排序后列表,原列表l1完全不变。所以Program-1里l2是排序后的新列表,和本身就有序的l1比较,结果相等,触发if分支的输出。
  • l1.sort()是列表的内置方法,它会直接修改原列表让它变成有序,但这个方法的返回值是None。Program-2里实际是在比较l1(已经被排序后的列表)和None,这两个显然不相等,所以进入else分支。

你可以把Program-2的执行过程拆成两步,就看得更清楚了:

l1.sort()  # 这行代码把l1改成有序,但返回值是None
if l1 == None:  # 这个判断肯定不成立
    print("List is in ascending order")
else:
    print("Not in ascending")

如果想用sort()实现和Program-1一样的效果,可以先复制原列表再排序比较:

l1 = [235, 300, 666, 788, 1092]
l2 = l1.copy()
l2.sort()
if l1 == l2:
    print("List is in ascending order")
else:
    print("Not in ascending")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:42:21