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列表的常用操作方法小结
May 21 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
Python语言实现将图片转化为html页面
Dec 06 Python
python dataframe常见操作方法:实现取行、列、切片、统计特征值
Jun 09 Python
python3.4爬虫demo
Jan 22 Python
pycharm修改文件的默认打开方式的步骤
Jul 29 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
python文件读写代码实例
Oct 21 Python
python socket 聊天室实例代码详解
Nov 14 Python
python 如何在 Matplotlib 中绘制垂直线
Apr 02 Python
Pytorch中Softmax与LogSigmoid的对比分析
Jun 05 Python
Python Pandas pandas.read_sql函数实例用法
Jun 21 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
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
php数组遍历类与用法示例
2019/05/24 PHP
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
js仿手机页面文件下拉刷新效果
2016/10/14 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
2019/05/05 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
python基于windows平台锁定键盘输入的方法
2015/03/05 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
python判断自身是否正在运行的方法
2019/08/08 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
python连接mysql有哪些方法
2020/06/24 Python
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
经济管理专业求职信
2014/06/09 职场文书
服装设计专业求职信
2014/06/16 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
2015年父亲节寄语
2015/03/23 职场文书
统计员岗位职责范本
2015/04/14 职场文书
入党介绍人意见范文
2015/06/01 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书