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的Tornado框架中实现简单的在线代理的教程
May 02 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
Python  pip安装lxml出错的问题解决办法
Feb 10 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
在Pandas中给多层索引降级的方法
Nov 16 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
python实现微信自动回复机器人功能
Jul 11 Python
PyCharm中代码字体大小调整方法
Jul 29 Python
Django框架 querySet功能解析
Sep 04 Python
pyautogui自动化控制鼠标和键盘操作的步骤
Apr 01 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
Jul 31 Python
python中sys模块是做什么用的
Aug 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 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
javascript中文本框中输入法切换的问题
2013/12/10 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
JS的document.all函数使用示例
2013/12/30 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
javascript 判断用户有没有操作页面
2017/10/17 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
python中dir函数用法分析
2015/04/17 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
总经理秘书工作职责
2013/12/26 职场文书
母婴店促销方案
2014/03/05 职场文书
保护环境的标语
2014/06/09 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
行政文员岗位职责
2015/02/04 职场文书
2015年双拥工作总结
2015/04/08 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server