所以我开始使用Strings&列表(主要是基础)并注意到这个小事:
String1 = " Lot of white space "
String1 = String1.strip()
print(String1)
像魅力一样。
当我在LIST上尝试相同的事情(不同的操作)时。事情向南发展:
list1 = [1,5,8,4,2]
list1 = list1.sort()
print(list1)
输出 - 无
然而:
list1.sort()
print(list1)
提供所需的输出。
为什么会这样?
答案 0 :(得分:1)
来自Python Docs:
sort(*,key = None,reverse = None)此方法对列表进行排序, 仅使用<项目之间的比较。例外不会被抑制 - 如果任何比较操作失败,整个排序操作将失败(列表可能会处于部分修改状态)。
sort()接受两个只能通过关键字传递的参数 (仅限关键字参数): ... 此方法修改了适当的序列以确保空间经济性 对大序列进行排序。提醒用户它是旁边的 效果,它不返回排序的序列(使用sorted() 显式请求新的排序列表实例。
这意味着,list1.sort()
会对list1
元素进行排序,而不会创建任何只返回None
的新对象或列表。
>>> list1 = [1,5,8,4,2]
>>> is_None = list1.sort()
>>> is_None is None
True
与list1.sort()
相反,sorted()
(内置方法)会返回list1
的新排序列表:
sorted(iterable[, key][, reverse])
从中返回新的已排序列表 可迭代的项目。
>>> list_sorted = sorted(list1)
>>> list_sorted
[1, 2, 4, 5, 8]
>>> type(list_sorted)
<type 'list'>
答案 1 :(得分:0)
sort()
对列表进行排序,但会返回None
。第一个代码段打印返回值sort()
。第二个打印排序列表本身。
答案 2 :(得分:-1)
list.sort
是一种就地方法。它修改列表,而不是返回新列表。其返回值为None
,因此anything = some_list.sort()
将anything
设置为None
。
来自文档:
此方法在对大序列进行排序时修改了空间经济性的顺序。要提醒用户它是由副作用操作的,它不会返回已排序的序列(使用
sorted()
显式请求新的已排序列表实例)。
如果您更喜欢这种语法(完全没问题),请使用sorted(...)
代替list.sort
list1 = [1,5,8,4,2]
list1 = sorted(list1)