python中sorted方法排序规则:Python代码中按需要选择sort
python中sorted方法排序规则:Python代码中按需要选择sort(3)reverse表示排序结果是否反转。(2)key是带一个参数的函数,用来为每个元素提取比较值,默认为None(即直接比较每个元素)。sort([cmp key[ reverse]]])这两个方法有以下3个共同的参数:(1)cmp为用户自定义的任何比较函数,函数的参数为两个可以比较的元素(来自iterable或者list),函数根据第一个参数与第二个参数的关系依次返回-1、0或者 1。该参数默认和是None。
各种排序算法以及它们的时间复杂度分析是我们面试过程中进程遇到问题。的确,在实际的应用的过程中确实会遇到各种需要排序的情况,比如按照字母表输出一个序列、对记录的多个字段进行排序等。
还好的是,Python中的排序相对简单,常用的函数有sort()和sorted()两种。这两种函数并不完全相同,各有各的用武之地。
1、相比于sort(),sorted()使用的范围更为广泛,两者的函数形式分别如下:
sorted(iterable[ cmp[ key [reverse]]])
sort([cmp key[ reverse]]])
这两个方法有以下3个共同的参数:
(1)cmp为用户自定义的任何比较函数,函数的参数为两个可以比较的元素(来自iterable或者list),函数根据第一个参数与第二个参数的关系依次返回-1、0或者 1。该参数默认和是None。
(2)key是带一个参数的函数,用来为每个元素提取比较值,默认为None(即直接比较每个元素)。
(3)reverse表示排序结果是否反转。
从函数的定义形式可以看出,sorted()作用于任意可以迭代的对象,而sort()一般作用于列表。因此下面的例子针对元组使用sort()方法会抛出AttributeError,而使用sorted()函数则没有这个问题。
2、当排序对象为列表的时候两者适用的场景不同。
sorted()函数会返回一个排序后的列表,原有列表保持不变;而sort()函数会直接修改原有列表,函数返回为None。
因此如果实际应用过程中需要保留原有列表,使用sorted()函数比较合适,否则可以选择sort()函数,因为sort()函数不需要复制原有列表,消耗的内存较少,效率也高。
3、无论是sort()还是sorted()函数,传入参数key比传入参数cmp效率高。
cmp传入的函数在整个排序过程中会调用多次,函数开销较大;而key针对每个元素仅仅作一次处理,因此使用key比使用cmp效率高。