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
相关产品推荐
相关产品推荐

