在 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)
我对下面的代码执行完全困惑,
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)