当前位置:   article > 正文

【Python使用技巧】Python列表排序方法list.sort()的时空复杂度、参数及其使用,key参数的函数定义方法_python sort()函数时间复杂度

python sort()函数时间复杂度

list.sort(*key=Nonereverse=False)

 

时空复杂度

Python中list.sort使用的排序方式为TimeSort,TimeSort是结合了归并排序(merge sort)和插入(insert sort)排序的一种在实际应用中高效的排序算法。 

最坏时间复杂度O(nlgn),空间复杂度O(n)。

 

参数

key

1、

传入关键字参数,用于计算列表中每项的权值大小。

例:

        list = [(2, 3), (7, 5), (2, 1), (4, 4), (2, 8)]

        用列表中元组的第二项进行排序,可以传入 key=lambda x:x[1];

        先用列表中元组的第一项升序排序,若第一项相等则用第二项降序排序,可以传入 key = lambda x:(x[0], -x[1])。

2、

使用 functools.cmp_to_key(func) 兼容Python2.4版本前的比较。

func(x, y) :若 x>y 返回一个正数;若  x<y 返回一个负数;若 x=y 返回0。

        要求:先用列表中元组的第一项升序排序,若第一项相等则用第二项降序排序

  1. def cmp(x, y):
  2. if x[0] < y[0]:
  3. return 1
  4. if x[0] > y[0]:
  5. return -1
  6. if x[1] > y[1]:
  7. return 1
  8. elif x[1] < y[1]:
  9. return -1
  10. else:
  11. return 0
  12. list = [(2, 3), (7, 5), (2, 1), (4, 4), (2, 8)]
  13. list.sort(key=functools.cmp_to_key(cmp))

 

reverse

    由上述的例子,聪明的同学应该意识到sort默认是按照升序排序,于是就有了reverse参数。设置reverse=True,sort将按照降序排序。

    另外,若不设置key参数和reverse参数,sort方法默认先按照元组第一项升序排序,若相等则按照元组第二项排序,若仍相等则位置保持不变(稳定的排序方法)。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/723026
推荐阅读
相关标签
  

闽ICP备14008679号