list.sort方法与sorted()函数的返回值

  • Post author:
  • Post category:其他




TypeError: ‘NoneType’ object is not subscriptable:


关于list.sort排序为None




问题描述:


代码如下:

strNum = input("请连续输入三个数字(空格隔开):",)
lst= list(map(int, strNum.split( )))
lstFirst=lst.sort()
print(lstFirst[0])




原因分析:


list.sort 方法会就地排序列表,也就是说不会把原列表复制一份。这也是这个方法的返回值是 None 的原因,提醒你本方法不会新建一个列表。在这种情况下返回 None 其实是 Python 的一个惯例:如果一个函数或者方法对对象进行的是就地改动,那它就应该返回 None,好让调用者知道传入的参数发生了变动,而且并未产生新的对象。简而言之就是没有什么变化,现在的列表还是还原来的列表。




解决方案:


这里我是将

list.sort()

改为

sorted


与 list.sort 相反的是内置函数 sorted,它会另外新建一个列表作为返回值。这个方法可以接受任何形式的可迭代对象作为参数,包括不可变序列或生成器。最终sorted 将接受的参数,倒腾为一个列表。 list.sort 方法和 sorted 函数,都有两个可选的关键字参数。

strNum = input("请连续输入三个数字(空格隔开):",)
lst= list(map(int, strNum.split( )))
lst=sorted(lst)
print(lst[0])



版权声明:本文为qq_45507472原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。