当前位置:   article > 正文

sorted函数对列表排序_列表排序sorted

列表排序sorted

sorted函数是Python内置的排序函数。它接受一个可迭代的对象作为输入,返回一个新的经过排序的列表。

语法格式如下: sorted(iterable, key=None, reverse=False)

参数说明:

  • iterable:可迭代对象,例如列表、元组、字符串等。
  • key:可选参数,用于指定排序的方式,可以是一个函数或者lambda表达式。默认值为None,表示按照元素的大小进行排序。
  • reverse:可选参数,用于指定是否降序排列。默认值为False,表示升序排列。

注意:sorted函数返回一个新的已排序的列表,原始列表不会被修改。如果要对原始列表进行排序,可以使用列表的sort方法。

1.简单数字

如果列表元素是一个个数字,直接调用函数即可。

  1. list1 = [2, 6, 3, 8]
  2. # 升序排列
  3. print(sorted(list1)) # 输出:[2, 3, 6, 8]
  4. # 倒序排列
  5. print(sorted(list1, reverse=True)) # 输出:[8, 6, 3, 2]
2.嵌套列表或元组

若列表中嵌套了列表或元组作为元素,可指定元素列表某个位置的值作为排序依据。

  1. list2 = [
  2. [88, 90, 94],
  3. [94, 80, 88],
  4. [80, 92, 86],
  5. ]
  6. # 1.根据元素列表的第一个值作为排序依据
  7. print(sorted(list2, key=lambda x: x[0]))
  8. # 输出:[[80, 92, 86], [88, 90, 94], [94, 80, 88]]
  9. # 2.根据元素列表的第二个值作为排序依据
  10. print(sorted(list2, key=lambda x: x[1]))
  11. # 输出:[[94, 80, 88], [88, 90, 94], [80, 92, 86]]
  12. # 3.根据元素列表的第三个值作为排序依据
  13. print(sorted(list2, key=lambda x: x[2]))
  14. # 输出:[[80, 92, 86], [94, 80, 88], [88, 90, 94]]
3.嵌套字典

若列表中嵌套了字典,可指定元素字典某个键的值作为排序依据。

  1. list2 = [
  2. {'name': '张三', 'yuwen': 88, 'shuxue': 90, 'yingyu': 94},
  3. {'name': '李四', 'yuwen': 94, 'shuxue': 80, 'yingyu': 88},
  4. {'name': '王五', 'yuwen': 80, 'shuxue': 92, 'yingyu': 86},
  5. ]
  6. # 1.根据字典中yuwen键的值进行排序
  7. print(sorted(list2, key=lambda x: x['yuwen']))
  8. # [{'name': '王五', 'yuwen': 80, 'shuxue': 92, 'yingyu': 86},
  9. # {'name': '张三', 'yuwen': 88, 'shuxue': 90, 'yingyu': 94},
  10. # {'name': '李四', 'yuwen': 94, 'shuxue': 80, 'yingyu': 88}]
  11. # 其他同理
4.多重排序且顺序相同

要实现多重排序,只需要在key参数的匿名函数中返回多个值即可。

  1. list3 = [
  2. [88, 90, 94],
  3. [94, 80, 88],
  4. [80, 90, 86],
  5. ]
  6. # 先根据第二个值从小到大排序,第二个值相同的,按第一个值从小到大排序
  7. # 优先级是从左到右
  8. print(sorted(list3, key=lambda x: (x[1], x[0])))
  9. # 输出:[[94, 80, 88], [80, 90, 86], [88, 90, 94]]
5.多重排序且顺序相反

有多重排序,但顺序是一个升序,一个降序的。解决方法也简单,在反向的值前面加上负号。

  1. list3 = [
  2. [88, 90, 94],
  3. [94, 80, 88],
  4. [80, 90, 86],
  5. ]
  6. # 先根据第二个值从小到大排序,第二个值相同的,按第一个值从大到小排序
  7. print(sorted(list3, key=lambda x: (x[1], -x[0])))
  8. # 输出:[[94, 80, 88], [88, 90, 94], [80, 90, 86]]

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

闽ICP备14008679号