python sorted()
函数通过回调函数或者lamda表达式的方式排序可迭代对象的每个元素。它不会改变原有可迭代对象。
语法
语法如下:sorted(iterable,key=函数(排序规则), reverse=False)
参数
- iterable: 可迭代对象。
- key:可选参数,排序规则(排序函数), 在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数. 根据函数运算的结果进行排序。
- reverse:可选参数,是否倒序。True: 倒序, False: 正序
返回值
返回排序好的可迭代对象
程序示例
介绍一些例子了解该函数的使用方法。
例1
没有自定义函数的例子
#!/usr/bin/python
# coding=utf-8
lst = [3,2,5,4,1]
lst_ret = sorted(lst) #正序
lst_ret2 = sorted(lst, reverse=True) #倒序
print("正序", lst_ret)
print("倒序", lst_ret2)
程序运行结果:
正序 [1, 2, 3, 4, 5]
倒序 [5, 4, 3, 2, 1]
倒序 [5, 4, 3, 2, 1]
例2
自定义函数,根据字符串的长度排序的例子
#!/usr/bin/python
# coding=utf-8
# 定义函数按照字符串的长度排序
def sort_by_len(e):
return len(e)
lst = ['yxjc123','jd','baidu','sohu']
print("自定义函数正序排序:", sorted(lst, key=sort_by_len))
print("自定义函数倒序排序:", sorted(lst, key=sort_by_len, reverse=True))
程序运行结果:
自定义函数正序排序: ['jd', 'sohu', 'baidu', 'yxjc123']
自定义函数倒序排序: ['yxjc123', 'baidu', 'sohu', 'jd']
自定义函数倒序排序: ['yxjc123', 'baidu', 'sohu', 'jd']