Python 列表排序方法reverse、sort、sorted详解


Posted in Python onJanuary 22, 2016

python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加入条件参数进行排序。

reverse()方法

将列表中元素反转排序,比如下面这样

>>> x = [1,5,2,3,4]
>>> x.reverse()
>>> x
[4, 3, 2, 5, 1]

reverse列表反转排序:是把原列表中的元素顺序从左至右的重新存放,而不会对列表中的参数进行排序整理。如果需要对列表中的参数进行整理,就需要用到列表的另一种排序方式sort正序排序。

sort()排序方法

此函数方法对列表内容进行正向排序,排序后的新列表会覆盖原列表(id不变),也就是sort排序方法是直接修改原列表list排序方法。

>>> a = [5,7,6,3,4,1,2]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5, 6, 7]

在玩蛇网许多python初学者,对sort()方法比较糊涂。有的时候会需要一个排序好的列表,而又想保存原有未排序列表,他们会这么操作:

>>> a = [5,7,6,3,4,1,2]
>>> b = a.sort()
>>> print b
None

这个时候问题出现了,变量b得到的是一个空值。那么想要得到排序好的列表,又想保留原列表怎么办呢?列表sorted()方法可以帮你实现。

sorted()方法

即可以保留原列表,又能得到已经排序好的列表sorted()操作方法如下:

>>> a = [5,7,6,3,4,1,2]
>>> b = sorted(a)
>>> a
[5, 7, 6, 3, 4, 1, 2]
>>> b
[1, 2, 3, 4, 5, 6, 7]

sorted()方法可以用在任何数据类型的序列中,返回的总是一个列表形式:

>>> sorted('iplaypython.com')
['.', 'a', 'c', 'h', 'i', 'l', 'm', 'n', 'o', 'o', 'p', 'p', 't', 'y', 'y']

三者的区别

sort()是可变对象(字典、列表)的方法,无参数,无返回值,sort()会改变可变对象,因此无需返回值。sort()方法是可变对象独有的方法或者属性,而作为不可变对象如元组、字符串是不具有这些方法的,如果调用将会返回一个异常。

>>> a=[5,4,3,2,1]
>>> a.sort()
>>> 
>>> a
[1, 2, 3, 4, 5]

sorted()是python的内置函数,并不是可变对象(列表、字典)的特有方法,sorted()函数需要一个参数(参数可以是列表、字典、元组、字符串),无论传递什么参数,都将返回一个以列表为容器的返回值,如果是字典将返回键的列表。

>>> mystring="54321"
>>> mytuple=(5,4,3,2,1)
>>> mylist=[5,4,3,2,1]
>>> sorted(mystring)
['1', '2', '3', '4', '5']
>>> sorted(mytuple)
[1, 2, 3, 4, 5]
>>> sorted(mylist)
[1, 2, 3, 4, 5]

reverse()与sort的使用方式一样,而reversed()与sorted()的使用方式相同

>>> mylist=[5,4,3,2,1]
>>> mylist.reverse()
>>> mylist
[1, 2, 3, 4, 5]
>>> mylist=[5,4,3,2,1]
>>> for i in reversed(mylist):
...   print i,
... 
1 2 3 4 5

通过序列的切片也可以达到“逆转”的效果

>>> mystring="54321"
>>> mytuple=(5,4,3,2,1)
>>> mylist=[5,4,3,2,1]
>>> mystring[::-1]
'12345'
>>> mytuple[::-1]
(1, 2, 3, 4, 5)
>>> mylist[::-1]
[1, 2, 3, 4, 5]

本文讲解的是Python列表最基础的排序方法,列表还有更高级的排序方法,比如可以在方法内加入排序条件,这些会在列表高级排序方法文章中为大家介绍。

Python 相关文章推荐
Python多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
Python写的Tkinter程序屏幕居中方法
Mar 10 Python
详解python 拆包可迭代数据如tuple, list
Dec 29 Python
python用户管理系统
Mar 13 Python
python中实现数组和列表读取一列的方法
Apr 03 Python
django 开发忘记密码通过邮箱找回功能示例
Apr 17 Python
python实现生成Word、docx文件的方法分析
Aug 30 Python
python logging通过json文件配置的步骤
Apr 27 Python
2021年值得向Python开发者推荐的VS Code扩展插件
Jan 25 Python
Python用requests库爬取返回为空的解决办法
Feb 21 Python
python3实现常见的排序算法(示例代码)
Jul 04 Python
Sentry的安装、配置、使用教程(Sentry日志手机系统)
Jul 23 Python
Python中使用urllib2模块编写爬虫的简单上手示例
Jan 20 #Python
Python模拟百度登录实例详解
Jan 20 #Python
Python的Scrapy爬虫框架简单学习笔记
Jan 20 #Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 #Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
Jan 20 #Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 #Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
Jan 20 #Python
You might like
discuz的php防止sql注入函数
2011/01/17 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
php安装swoole扩展的方法
2015/03/19 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
php获取微信openid方法总结
2019/10/10 PHP
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
2013/08/23 Javascript
JS分页效果示例
2013/10/11 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
JS实现超简单的仿QQ折叠菜单效果
2015/09/21 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
js实现String.Fomat的实例代码
2016/09/02 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
JavaScript事件对象event用法分析
2018/07/27 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
Python中matplotlib中文乱码解决办法
2017/05/12 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
python中count函数简单的实例讲解
2020/02/06 Python
python map比for循环快在哪
2020/09/21 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
电气技术员岗位职责
2013/11/19 职场文书
年终晚会主持词
2014/03/25 职场文书
假期安全教育广播稿
2014/10/04 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
欠款起诉书范文
2015/05/19 职场文书