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

Python中数组调用sort方法后计算长度报TypeError错误的原因是什么?

问题原因

  • Python 中列表内置的sort()方法属于原地排序,它不会返回排序后的新列表,执行完成后直接修改原列表的元素顺序,返回值固定为None。
  • 你执行了a = a.sort()操作后,相当于把None赋值给了变量a,此时a的类型已经从列表变成了NoneType,对None调用len()方法自然会触发类型错误。
  • 你提到的「先计算长度再排序能正常运行」的原因是:此时len(a)的计算发生在a = a.sort()赋值操作之前,调用len()时a还没有被覆盖为None,因此不会触发错误。

正确写法示例

写法1:直接调用sort()不赋值

a = [10,30,4]
a.sort() # 直接原地修改a的元素顺序,不需要额外赋值
r = len(a) - 1
print(r) # 输出结果为2

写法2:用sorted()函数生成新的排序后列表

如果需要保留原列表的内容,可以用内置的sorted()函数,它会返回排序后的新列表:

a = [10,30,4]
sorted_a = sorted(a)
r = len(sorted_a) - 1
print(r) # 输出结果为2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:09:04