[902]python list排序
时间:2022-07-26
本文章向大家介绍[902]python list排序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
sorted函数
使用python的sorted函数,该函数默认从小到大排序
sorted(list)返回一个对象,可以用作表达式。原来的list不变,生成一个新的排好序的list对象。
普通list
>>> a = [5,2,9,8,6]
>>> a = sorted(a)
>>> print(a)
[2, 5, 6, 8, 9]
倒序排序为从大到小排序,使用reverse=True
>>> a = [5,2,9,8,6]
>>> a = sorted(a,reverse=True)
>>> print(a)
[9, 8, 6, 5, 2]
元组list
列表元素为元组元素时,我们需要用到参数关键词key,lambda是一个隐函数,是固定写法,x表示列表中的一个元素,在这里,表示一个元组,x为任意名;x[0]表示元组里的第一个元素,第二个元素就是x[1]。
按第一个关键字排序
>>> a = [('x',0.56),('a',1.28),('c',2.36),('s',5.02),('h',20)]
>>> a = sorted(a,key = lambda x:x[0])
>>> print(a)
[('a', 1.28), ('c', 2.36), ('h', 20), ('s', 5.02), ('x', 0.56)]
按第二个关键字排序
>>> a = [('x',0.56),('a',1.28),('c',2.36),('s',5.02),('h',20)]
>>> a = sorted(a,key = lambda x:x[1])
>>> print(a)
[('x', 0.56), ('a', 1.28), ('c', 2.36), ('s', 5.02), ('h', 20)]
倒序排序为从大到小排序,使用reverse=True
>>> a = [('x',0.56),('a',1.28),('c',2.36),('s',5.02),('h',20)]
>>> a = sorted(a,key = lambda x:x[1],reverse=True)
>>> print(a)
[('h', 20), ('s', 5.02), ('c', 2.36), ('a', 1.28), ('x', 0.56)]
对列表中元素倒序
使用reverse函数,是对list中元素倒序
>>> a = [('x',0.56),('a',1.28),('c',2.36),('s',5.02),('h',20)]
>>> a.reverse()
>>> print(a)
[('h', 20), ('s', 5.02), ('c', 2.36), ('a', 1.28), ('x', 0.56)]
list.sort()
list.sort() 不会返回对象,改变原有的list。
list.sort(func=None, key=None, reverse=False)
正向排序
>>>L = [2,3,1,4]
>>>L.sort()
>>>L
>>>[1,2,3,4]
>>> L = [2,3,1,4]
>>> a=L.sort()
>>> a #这里a为None
>>> L
[1, 2, 3, 4]
反向排序
>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>>>L
>>>[4,3,2,1]
对第二个关键字排序
-----------------------------------------方法1------------------------------------
>>>L = [('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(lambda x,y:cmp(x[1],y[1]))
>>>L
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
-----------------------------------------方法2------------------------------------
>>>L = [('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(key=lambda x:x[1])
>>>L
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
-----------------------------------------方法3------------------------------------
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>import operator
>>>L.sort(key=operator.itemgetter(1))
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
------------------------------------(DSU方法:Decorate-Sort-Undercorate)-------------------------------------
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort
>>>A.sort()
>>>L = [s[2] for s in A]
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
如果我们想用第二个关键字排过序后再用第一个关键字进行排序呢?有两种方法
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:(x[1],x[0]))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
-----------------------------------------------------------------------
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=operator.itemgetter(1,0))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
参考:https://www.cnblogs.com/qilin20/p/12301878.html https://www.cnblogs.com/python960410445/p/11831393.html
- Effective Modern C++翻译(7)-条款6:当auto推导出意外的类型时,使用显式的类型初始化语义
- 2.3 ls命令
- Effective Modern C++翻译(6)-条款5:auto比显示的类型声明要更好
- 大白话-prototype属性
- Effective Modern C++翻译(5)-条款4:了解如何观察推导出的类型
- Effective Modern C++翻译(4)-条款3:了解decltype
- 大白话-constructor
- Effective Modern C++翻译(3)-条款2:明白auto类型推导
- React Native在Android平台运行gif的解决方法
- Effective Modern C++翻译(2)-条款1:明白模板类型推导
- Android ormLite复杂条件查询
- Effective Modern C++翻译(1):序言
- C++操作mysql方法总结(2)
- Linux基础(day3)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 蜜罐溯源
- BlackHat2020议题之Web缓存投毒
- python自学第二节课(笔记)
- 究竟!为什么处理排序后的数组比没有排序的快?想过没有?
- 2020 年最牛逼的 10 门编程语言
- Nginx系列:Nginx源码安装
- Nginx系列:负载均衡
- low版爬虫脚本,Python简单图片爬虫案例
- 漫画:什么是计数排序?
- SEO工具脚本,Python百度普通收录API提交工具
- Elastic Stack 实现日志的自动采集、搜索和分析
- 致开发人员:沉迷面向对象编程不可自拔?函数式编程了解一下
- MySQL空间函数实现位置打卡
- 单细胞交响乐8-marker基因检测
- 用TensorFlow.js在浏览器中进行实时语义分割 | MixLab算法系列