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写的创建文件夹自定义函数mkdir()
Aug 25 Python
Python远程桌面协议RDPY安装使用介绍
Apr 15 Python
Python中str is not callable问题详解及解决办法
Feb 10 Python
python正则表达式的使用
Jun 12 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
python实现按长宽比缩放图片
Jun 07 Python
Python和Go语言的区别总结
Feb 20 Python
用python给自己做一款小说阅读器过程详解
Jul 11 Python
解决Python spyder显示不全df列和行的问题
Apr 20 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
May 11 Python
Python自动创建Excel并获取内容
Sep 16 Python
Python通过getattr函数获取对象的属性值
Oct 16 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
功能齐全的PHP发送邮件类代码附详细说明
2008/07/10 PHP
php教程之phpize使用方法
2014/02/12 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
javascript管中窥豹 形参与实参浅析
2011/12/17 Javascript
JavaScript实现GriwView单列全选(自写代码)
2013/05/13 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
Redux实现组合计数器的示例代码
2018/07/04 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
python实现公司年会抽奖程序
2019/01/22 Python
python画图的函数用法以及技巧
2019/06/28 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
李宁官方网店:中国运动品牌
2017/11/02 全球购物
英国电子专家:maplin
2019/09/04 全球购物
宣传标语大全
2014/07/01 职场文书
期末复习计划
2015/01/19 职场文书
sql中mod()函数取余数的用法
2021/05/29 SQL Server