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 相关文章推荐
python3.3使用tkinter开发猜数字游戏示例
Mar 14 Python
使用Python的判断语句模拟三目运算
Apr 24 Python
教你学会使用Python正则表达式
Sep 07 Python
python 实现一个贴吧图片爬虫的示例
Oct 12 Python
python3 selenium 切换窗口的几种方法小结
May 21 Python
Python中最大递归深度值的探讨
Mar 05 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 Python
Python 实现OpenCV格式和PIL.Image格式互转
Jan 09 Python
python中for in的用法详解
Apr 17 Python
Python小白垃圾回收机制入门
Jun 09 Python
python logging模块的使用详解
Oct 23 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/11/23 PHP
php仿discuz分页效果代码
2008/10/02 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
php设计模式之迭代器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
jQuery基于当前元素进行下一步的遍历
2014/05/20 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
Vue分页插件的前后端配置与使用
2019/10/09 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
python实现从web抓取文档的方法
2014/09/26 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
python next()和iter()函数原理解析
2020/02/07 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
Python如何实现邮件功能
2020/05/27 Python
应届生人事助理求职信
2013/11/09 职场文书
人民调解员培训方案
2014/06/05 职场文书
影视广告专业求职信
2014/09/02 职场文书
班主任自我评价范文
2015/03/11 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
社区结对共建协议书
2016/03/23 职场文书
浅谈MySQL之select优化方案
2021/08/07 MySQL