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操作MongoDB基础知识
Nov 01 Python
python生成式的send()方法(详解)
May 08 Python
Python入门_浅谈逻辑判断与运算符
May 16 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
详解基于django实现的webssh简单例子
Jul 17 Python
10招!看骨灰级Pythoner玩转Python的方法
Apr 15 Python
python实现关闭第三方窗口的方法
Jun 28 Python
Python实现Singleton模式的方式详解
Aug 08 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
Sep 17 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 Python
python 5个实用的技巧
Sep 27 Python
Python编程源码报错解决方法总结经验分享
Oct 05 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中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
php 中的closure用法详解
2017/06/12 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
javascript Math.random()随机数函数
2009/11/04 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
深入浅析Extjs中store分组功能的使用方法
2016/04/20 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
js实现图片360度旋转
2017/01/22 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
angularjs实现简单的购物车功能
2017/09/21 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
[01:02]2014 DOTA2国际邀请赛中国区预选赛 现场抢先看
2014/05/22 DOTA
[00:37]DOTA2上海特级锦标赛 Secert 战队宣传片
2016/03/03 DOTA
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
Python之pymysql的使用小结
2019/07/01 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
银行实习生的自我评价
2014/01/13 职场文书
万年牢教学反思
2014/02/15 职场文书
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
新年寄语大全
2014/04/12 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript