赞
踩
sorted函数是Python内置的排序函数。它接受一个可迭代的对象作为输入,返回一个新的经过排序的列表。
语法格式如下: sorted(iterable, key=None, reverse=False)
参数说明:
注意:sorted函数返回一个新的已排序的列表,原始列表不会被修改。如果要对原始列表进行排序,可以使用列表的sort方法。
如果列表元素是一个个数字,直接调用函数即可。
- list1 = [2, 6, 3, 8]
- # 升序排列
- print(sorted(list1)) # 输出:[2, 3, 6, 8]
- # 倒序排列
- print(sorted(list1, reverse=True)) # 输出:[8, 6, 3, 2]
若列表中嵌套了列表或元组作为元素,可指定元素列表某个位置的值作为排序依据。
- list2 = [
- [88, 90, 94],
- [94, 80, 88],
- [80, 92, 86],
- ]
- # 1.根据元素列表的第一个值作为排序依据
- print(sorted(list2, key=lambda x: x[0]))
- # 输出:[[80, 92, 86], [88, 90, 94], [94, 80, 88]]
- # 2.根据元素列表的第二个值作为排序依据
- print(sorted(list2, key=lambda x: x[1]))
- # 输出:[[94, 80, 88], [88, 90, 94], [80, 92, 86]]
- # 3.根据元素列表的第三个值作为排序依据
- print(sorted(list2, key=lambda x: x[2]))
- # 输出:[[80, 92, 86], [94, 80, 88], [88, 90, 94]]
若列表中嵌套了字典,可指定元素字典某个键的值作为排序依据。
- list2 = [
- {'name': '张三', 'yuwen': 88, 'shuxue': 90, 'yingyu': 94},
- {'name': '李四', 'yuwen': 94, 'shuxue': 80, 'yingyu': 88},
- {'name': '王五', 'yuwen': 80, 'shuxue': 92, 'yingyu': 86},
- ]
- # 1.根据字典中yuwen键的值进行排序
- print(sorted(list2, key=lambda x: x['yuwen']))
- # [{'name': '王五', 'yuwen': 80, 'shuxue': 92, 'yingyu': 86},
- # {'name': '张三', 'yuwen': 88, 'shuxue': 90, 'yingyu': 94},
- # {'name': '李四', 'yuwen': 94, 'shuxue': 80, 'yingyu': 88}]
-
- # 其他同理
要实现多重排序,只需要在key参数的匿名函数中返回多个值即可。
- list3 = [
- [88, 90, 94],
- [94, 80, 88],
- [80, 90, 86],
- ]
- # 先根据第二个值从小到大排序,第二个值相同的,按第一个值从小到大排序
- # 优先级是从左到右
- print(sorted(list3, key=lambda x: (x[1], x[0])))
- # 输出:[[94, 80, 88], [80, 90, 86], [88, 90, 94]]
有多重排序,但顺序是一个升序,一个降序的。解决方法也简单,在反向的值前面加上负号。
- list3 = [
- [88, 90, 94],
- [94, 80, 88],
- [80, 90, 86],
- ]
- # 先根据第二个值从小到大排序,第二个值相同的,按第一个值从大到小排序
- print(sorted(list3, key=lambda x: (x[1], -x[0])))
- # 输出:[[94, 80, 88], [88, 90, 94], [80, 90, 86]]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。