Python学习小技巧之列表项的排序


Posted in Python onMay 20, 2017

本文介绍的是关于Python列表项排序的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:

典型代码1:

data_list = [6, 9, 1, 3, 0, 10, 100, -100] 
data_list.sort() 
print(data_list)

输出1:

[-100, 0, 1, 3, 6, 9, 10, 100]

典型代码2:

data_list = [6, 9, 1, 3, 0, 10, 100, -100] 
data_list_copy = sorted(data_list) 
print(data_list) 
print(data_list_copy)

输出2:

[6, 9, 1, 3, 0, 10, 100, -100] 
[-100, 0, 1, 3, 6, 9, 10, 100]

应用场景

需要对列表中的项进行排序时使用。其中典型代码1是使用的列表自身的一个排序方法sort,这个方法自动按照升序排序,并且是原地排序,被排序的列表本身会被修改;典型代码2是调用的内置函数sort,会产生一个新的经过排序后的列表对象,原列表不受影响。这两种方式接受的参数几乎是一样的,他们都接受一个key参数,这个参数用来指定用对象的哪一部分为排序的依据:

data_list = [(0, 100), (77, 34), (55, 97)] 
data_list.sort(key=lambda x: x[1]) # 我们想要基于列表项的第二个数进行排序 
print(data_list) 
 
>>> [(77, 34), (55, 97), (0, 100)]

另外一个经常使用的参数是reverse,用来指定是否按照倒序排序,默认为False:

data_list = [(0, 100), (77, 34), (55, 97)] 
data_list.sort(key=lambda x: x[1], reverse=True) # 我们想要基于列表项的第二个数进行排序,并倒序 
print(data_list) 
>>> [(0, 100), (55, 97), (77, 34)]

带来的好处

1. 内置的排序方法,执行效率高,表达能力强,使代码更加紧凑,已读

2. 灵活的参数,用于指定排序的基准,比在类似于Java的语言中需要写一个comparator要方便很多

其它说明

1. sorted内置函数比列表的sort方法要适用范围更广泛,它可以对除列表之外的可迭代数据结构进行排序;

2. list内置的sort方法,属于原地排序,理论上能够节省内存的消耗;

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python回调函数用法实例分析
May 09 Python
python实现井字棋游戏
Mar 30 Python
pygame加载中文名mp3文件出现error
Mar 31 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
Python实现查看系统启动项功能示例
May 10 Python
pandas.loc 选取指定列进行操作的实例
May 18 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
windows下安装Python虚拟环境virtualenvwrapper-win
Jun 14 Python
python字符串Intern机制详解
Jul 01 Python
python绘制无向图度分布曲线示例
Nov 22 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
django中嵌套的try-except实例
May 21 Python
Python学习小技巧之列表项的推导式与过滤操作
May 20 #Python
Python yield 使用方法浅析
May 20 #Python
Python学习小技巧之列表项的拼接
May 20 #Python
Django验证码的生成与使用示例
May 20 #Python
Linux RedHat下安装Python2.7开发环境
May 20 #Python
深入理解Python中的内置常量
May 20 #Python
python万年历实现代码 含运行结果
May 20 #Python
You might like
php学习 字符串课件
2008/06/15 PHP
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
2011/05/07 PHP
浅析php header 跳转
2013/06/17 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
表单元素事件 (Form Element Events)
2009/07/17 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
jQuery 遍历-nextUntil()方法以及prevUntil()方法的使用介绍
2013/04/26 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
基于jquery实现动态竖向柱状条特效
2016/02/12 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
windows下pycharm安装、创建文件、配置默认模板
2018/07/31 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
会计自我鉴定
2014/02/04 职场文书
万能检讨书2000字
2014/10/17 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
员工年终考核评语
2014/12/31 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang