在 python 中排序后尝试计算数组长度时出错

Getting error when trying to calculate the length of the array after sort in python

我对下面的代码执行完全困惑,

a= [10,30,4]
a = a.sort()
r = len(a) - 1
print (r)

当上面的代码执行时我得到
r = len(a) - 1 类型错误:'NoneType' 类型的对象没有 len()

但是,如果我在没有排序的情况下找到长度,或者在找到长度后对数组进行排序,代码运行正常。这有什么原因吗?

a.sort() 是就地操作。它就地修改列表并且不 return 任何东西。通过在 python 解释器中输入 help(list.sort) 查看 list.sort 的文档。

>>> help([].sort)
Help on built-in function sort:

sort(*, key=None, reverse=False) method of builtins.list instance
    Sort the list in ascending order and return None.

    The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
    order of two equal elements is maintained).

所以重点是,你不应该分配 listobject.sort() 的 return 值,因为它总是 return None

函数sort返回的值是None

因此,当您尝试分配 a = a.sort() 时,它与 a = None

相同

此处引用sorting basics

您的代码应该如下所示

a= [10,30,4]
a.sort()
r = len(a) - 1
print (r)

除了其他答案,如果你想要一个非就地函数,那么你可以 运行:

a = sorted(a)