python sort()和sorted()的不同
对列表中的元素进行排序,有两种常用方法:
1.
lst = [3, 5, 2, 1, 7] lst.sort() print(lst)
2.
lst = [3, 5, 2, 1, 7] lst = sorted(lst) print(lst)
虽然二者都可以实现排序,也都可以设定 key(排序函数)和 reverse(逆序)参数,但在使用时却有个很大的区别:
-
list 的 sort 方法是在原列表上进行排序,没有返回值,调用后列表中的元素即成为有序的。如果你把结果赋值,就会得到 None;
-
内置函数 sorted 则不修改原列表,而是生成一个新列表作为返回值。所以调用后必须赋值给变量才能保存结果。
Python 这么设计固然有它的道理(sorted 是后引入的,对 sort 的补充),但这并不是必然的选择。比如与 sorted 功能有些类似的,random 模块的 shuffle 方法,就是在原列表基础上打乱顺序,而非返回一个新列表。
你很难仅从方法的所属和名称就判断它的参数和返回值是怎样的。比如 range(a, b) 是包括 a 不包括 b,而 random.randint(a, b) 则是包括 a 也包括 b。
所以你在使用一个方法时,必定需要查阅相关文档,或在 python shell 中使用 help(方法名),了解参数和返回值的具体限定。