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 相关文章推荐
KMP算法精解及其Python版的代码示例
Jun 01 Python
Python urls.py的三种配置写法实例详解
Apr 28 Python
python 读写中文json的实例详解
Oct 29 Python
python实现批量图片格式转换
Jun 16 Python
python dataframe 输出结果整行显示的方法
Jun 14 Python
python中文编码与json中文输出问题详解
Aug 24 Python
python3 读取Excel表格中的数据
Oct 16 Python
python学习之hook钩子的原理和使用
Oct 25 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
关于matplotlib-legend 位置属性 loc 使用说明
May 16 Python
Python闭包的定义和使用方法
Apr 11 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扩展函数
2006/10/09 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
JavaScript 空位补零实现代码
2010/02/26 Javascript
js中判断控件是否存在
2010/08/25 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
将form表单通过ajax实现无刷新提交的简单实例
2016/10/12 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
layui table 表格模板按钮的实例代码
2019/09/21 Javascript
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
python实现ID3决策树算法
2018/08/29 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
python使用xlsxwriter实现有向无环图到Excel的转换
2018/12/12 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
关于递归的一道.NET面试题
2013/05/12 面试题
大学生入党自我鉴定
2013/10/31 职场文书
分公司总经理岗位职责
2014/08/03 职场文书
设备收款委托书范本
2014/10/02 职场文书
幼儿园感谢信
2015/01/21 职场文书
庆六一开幕词
2015/01/29 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
学生会主席任命书
2015/09/21 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
Win11快速关闭所有广告推荐
2022/04/19 数码科技
SQL Server Agent 服务无法启动
2022/04/20 SQL Server