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

列表sort方法调用失效,求解原因(附可用sorted方法的代码)

为啥list.sort()没生效?我来给你讲明白!

嘿,我完全懂你的困惑——sorted()和list.sort()这俩方法看起来差不多,但用法差得可远了,这就是你用sort没生效的核心原因!

先给你掰扯清楚两者的核心区别:

  • sorted(even)会返回一个全新的、排序好的列表,原列表even根本不会被改动。所以你能直接用sorted(even)[-1]取到最后一个(也就是最大的)元素,这也是你的代码能正常运行的原因。
  • 而even.sort()是原地修改原列表——它会把even本身变成排序后的样子,但这个方法不返回任何值(或者说返回None)。如果你试着写print(even.sort()[-1]),本质上是在对None做索引操作,这肯定会报错或者得不到预期结果!

那用sort()怎么实现你的需求呢?很简单,分两步来就行:

# Trying to find largest even number
def highest_even(li):
    even = []
    for num in li:
        if num % 2 == 0:
            even.append(num)
    even.sort()  # 先原地排序,直接修改even列表本身
    print(even[-1])  # 再取排序后列表的最后一个元素
highest_even([3, 2, 1, 3, 4, 8, 22, 11])

另外再给你提个小优化技巧:如果只是找最大的偶数,其实不用排序这么麻烦,直接遍历的时候记录最大值就行,效率会更高:

def highest_even(li):
    max_even = None
    for num in li:
        if num % 2 == 0:
            if max_even is None or num > max_even:
                max_even = num
    print(max_even)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 11:02:26