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

混合列表排序异常:为何-377.312被转换为87.6879999999?

问题分析:你的混合列表定义有语法错误!

哈哈,这个问题其实是个很容易忽略的语法小失误!让我给你拆解清楚:

首先看你定义的mixed列表代码:

mixed = [-131.23, 33213, 4454, 566, -33, 465. -377.312, 5.6656]

这里的465. -377.312并不是两个独立的列表元素——Python会把它解析成一个减法运算表达式:465.0 - 377.312,计算后的结果是87.68799999999999。也就是说,你的列表实际包含的元素是:
[-131.23, 33213, 4454, 566, -33, 87.68799999999999, 5.6656]

你以为key=float的转换有问题,但实际上问题出在列表定义本身——你的列表里根本不存在-377.312这个元素,自然排序结果里不会出现它。

修正方案

只需要在465.和-377.312之间加上逗号,把它们拆成两个独立元素即可:

# 修正后的列表定义
mixed = [-131.23, 33213, 4454, 566, -33, 465., -377.312, 5.6656]

如果你觉得465.不够直观,写成465.0也完全没问题。

现在再执行print(sorted(mixed, key=float)),就能得到符合逻辑的排序结果(不过要注意:-377.312比-131.23更小,所以正确的排序结果应该是[-377.312, -131.23, -33, 5.6656, 566, 4454, 33213],你之前的预期顺序把-131.23放在第一个是不准确的哦)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:44:11