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 文本文件内容批量抽取实例
Dec 10 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
python3-flask-3将信息写入日志的实操方法
Nov 12 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
Pycharm激活方法及详细教程(详细且实用)
May 12 Python
部署Django到阿里云服务器教程示例
Jun 03 Python
keras多显卡训练方式
Jun 10 Python
什么是python类属性
Jun 10 Python
如何基于Python爬取隐秘的角落评论
Jul 02 Python
Python内存泄漏和内存溢出的解决方案
Sep 26 Python
Python urllib库如何添加headers过程解析
Oct 05 Python
Python 中random 库的详细使用
Jun 03 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
一个程序下载的管理程序(二)
2006/10/09 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
php5.x禁用eval的操作方法
2018/10/19 PHP
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
jquery在Chrome下获取图片的长宽问题解决
2013/03/20 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
深入浅析JavaScript中prototype和proto的关系
2015/11/15 Javascript
Ionic快速安装教程
2016/06/03 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
2018/03/05 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Python探索之URL Dispatcher实例详解
2017/10/28 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
简单了解python PEP的一些知识
2019/07/13 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
Python换行与不换行的输出实例
2020/02/19 Python
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
上班睡觉检讨书
2014/01/09 职场文书
小学新学期寄语
2014/04/02 职场文书
美食节策划方案
2014/05/26 职场文书
业务员岗位职责范本
2015/04/03 职场文书
任长霞观后感
2015/06/16 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL
python元组打包和解包过程详解
2021/08/02 Python
Go归并排序算法的实现方法
2022/04/06 Golang