Python内置函数sorted()和列表方法sort()可以使用key参数指定排序规则,并且都是稳定排序,也就是说,对于指定规则不能涵盖的元素,本来谁在前面,排好以后谁还是在前面。
直接用代码说话:
>>> lst = [1, 3, 7, 5, 13, 11]
# 不指定排序规则,按元素大小升序排列
>>> sorted(lst)
[1, 3, 5, 7, 11, 13]
# 指定按转换成字符串以后的长度排序
# 13和11的长度一样
# 本来13在前面,排好以后还在前面
>>> sorted(lst, key=lambda x: len(str(x)))
[1, 3, 7, 5, 13, 11]
>>> lst.sort(key=lambda x: len(str(x)))
>>> print(lst)
[1, 3, 7, 5, 13, 11]
# 指定按转换成字符串以后的第一个字符升序排列
# 13和11的第一个字符一样
# 本来13在前面,排好以后还在前面
>>> sorted(lst, key=lambda x: str(x)[0])
[1, 13, 11, 3, 5, 7]
# 使用默认规则对lst进行原地排序
>>> lst.sort()
>>> print(lst)
[1, 3, 5, 7, 11, 13]
# 指定按转换成字符串以后的第一个字符升序排列
# 13和11的第一个字符一样
# 本来11在前面,排好以后还在前面
>>> sorted(lst, key=lambda x: str(x)[0])
[1, 11, 13, 3, 5, 7]