sorted() 函数对所有可迭代的对象进行排序操作。

  1. # ===========一般用法:===========
  2. # 1、简单排序
  3. a = [5,7,6,3,4,1,2]
  4. b = sorted(a) # 使用sorted,保留原列表,不改变列表a的值
  5. print(a)
  6. [5, 7, 6, 3, 4, 1, 2]
  7. print(b)
  8. [1, 2, 3, 4, 5, 6, 7]
  9. # ===========匿名函数用法:===========
  10. L=[('b',2),('a',1),('c',3),('d',4)]
  11. # 2、利用参数 cmp 排序
  12. sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))
  13. # 结果:
  14. [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
  15. # 3、利用参数 key 排序
  16. sorted(L, key=lambda x:x[1]) # 用来根据key值排序元组
  17. # 结果:
  18. [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
  19. # 4、按年龄升序
  20. students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
  21. sorted(students, key=lambda s: s[2])
  22. # 结果:
  23. [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
  24. # 5、按年龄降序
  25. sorted(students, key=lambda s: s[2], reverse=True)
  26. # 结果:
  27. [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
  28. names = ['David Beazley', 'Brian Jones',
  29. 'Raymond Hettinger', 'Ned Batchelder']
  30. sorted(names, key=lambda name: name.split()[-1].lower()) # 按照第二个名字排序
  31. """['Ned Batchelder', 'David Beazley', 'Raymond Hettinger', 'Brian Jones']

image.png