list.sort()对列表进行排序并替换原始列表,而sorted(list)则返回列表的排序副本,而不改变原始列表。
什么时候一个比另一个更受欢迎? 哪个更有效率?差多少? 执行list.sort()后,列表是否可以恢复到无序状态?
请使用为什么这些列表操作(方法)返回None,而不是结果列表?关闭OP无意中分配了.sort()结果的问题,而不是使用sorted或单独的语句。正确的调试将显示.sort()返回None,此时“为什么?”是剩下的问题。
list.sort()对列表进行排序并替换原始列表,而sorted(list)则返回列表的排序副本,而不改变原始列表。
什么时候一个比另一个更受欢迎? 哪个更有效率?差多少? 执行list.sort()后,列表是否可以恢复到无序状态?
请使用为什么这些列表操作(方法)返回None,而不是结果列表?关闭OP无意中分配了.sort()结果的问题,而不是使用sorted或单独的语句。正确的调试将显示.sort()返回None,此时“为什么?”是剩下的问题。
当前回答
Sorted()返回一个新的排序列表,不影响原始列表。list.sort()对列表进行就地排序,改变列表索引,并返回None(像所有就地操作一样)。
Sorted()适用于任何可迭代对象,而不仅仅是列表。字符串,元组,字典(你会得到键),生成器等,返回一个包含所有元素的列表,排序。
当你想要改变列表时使用list.sort(),当你想要返回一个新的排序对象时使用sorted()。当你想对可迭代对象(而不是列表)排序时,使用sorted()。 对于列表,list.sort()比sorted()更快,因为它不需要创建副本。对于任何其他可迭代对象,您没有选择。 不,您不能检索原始位置。一旦调用list.sort(),原来的顺序就消失了。
其他回答
注意:sort()和sorted()之间最简单的区别是: 不返回任何值,而sorted()返回一个可迭代列表。
Sort()不返回任何值。
sort()方法只是按特定顺序对给定列表中的元素进行排序——升序或降序,而不返回任何值。
sort()方法的语法是:
list.sort(key=..., reverse=...)
或者,也可以使用Python的内置函数sorted() 出于同样的目的。排序函数返回排序列表
list=sorted(list, key=..., reverse=...)
.sort()函数将new list的值直接存储在list变量中;所以你的第三个问题的答案是否定的。 此外,如果使用sorted(list)来执行此操作,则可以使用它,因为它没有存储在list变量中。有时.sort()方法也会充当函数,或者在其中使用参数。
您必须显式地将sorted(list)的值存储在变量中。
同样对于短数据的处理速度也不会有差别;但对于长列表;你应该直接使用.sort()方法来快速工作;但你将再次面临不可逆转的行动。
Sorted()返回一个新的排序列表,不影响原始列表。list.sort()对列表进行就地排序,改变列表索引,并返回None(像所有就地操作一样)。
Sorted()适用于任何可迭代对象,而不仅仅是列表。字符串,元组,字典(你会得到键),生成器等,返回一个包含所有元素的列表,排序。
当你想要改变列表时使用list.sort(),当你想要返回一个新的排序对象时使用sorted()。当你想对可迭代对象(而不是列表)排序时,使用sorted()。 对于列表,list.sort()比sorted()更快,因为它不需要创建副本。对于任何其他可迭代对象,您没有选择。 不,您不能检索原始位置。一旦调用list.sort(),原来的顺序就消失了。
下面是几个简单的例子,可以看出其中的区别:
请看这里的数字列表:
nums = [1, 9, -3, 4, 8, 5, 7, 14]
当在这个列表上调用sorted时,sorted会生成一个列表的副本。(这意味着您原来的列表将保持不变。)
让我们来看看。
sorted(nums)
返回
[-3, 1, 4, 5, 7, 8, 9, 14]
再看一下数字
nums
我们看到的是原始列表(未修改且未排序)。Sorted没有改变原始的列表
[1, 2, -3, 4, 8, 5, 7, 14]
取相同的nums列表并对其应用排序函数,将改变实际的列表。
让我们来看看。
从我们的nums列表开始,以确保内容仍然相同。
nums
[-3, 1, 4, 5, 7, 8, 9, 14]
nums.sort()
现在原始的nums列表改变了,看看nums,我们看到原始的列表改变了,现在排序了。
nums
[-3, 1, 2, 4, 5, 7, 8, 14]
使用list.sort()你改变的是列表变量,而使用sorted(list)你没有改变变量。
使用排序:
list = [4, 5, 20, 1, 3, 2]
list.sort()
print(list)
print(type(list))
print(type(list.sort())
应该返回这个:
[1, 2, 3, 4, 5, 20]
<class 'NoneType'>
但是使用sorted():
list = [4, 5, 20, 1, 3, 2]
print(sorted(list))
print(list)
print(type(sorted(list)))
应该返回这个:
[1, 2, 3, 4, 5, 20]
[4, 5, 20, 1, 3, 2]
<class 'list'>