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实现爬取逐浪小说的方法
Jul 07 Python
在Django的通用视图中处理Context的方法
Jul 21 Python
Python Paramiko模块的安装与使用详解
Nov 18 Python
Django中针对基于类的视图添加csrf_exempt实例代码
Feb 11 Python
python清除字符串中间空格的实例讲解
May 11 Python
python3.6下Numpy库下载与安装图文教程
Apr 02 Python
解决yum对python依赖版本问题
Jul 05 Python
python多线程同步实例教程
Aug 11 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
Python3爬虫mitmproxy的安装步骤
Jul 29 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实现微信公众号主动推送消息
2015/12/31 PHP
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
jQuery.extend 函数详解
2012/02/03 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
详解jQuery事件
2017/01/13 Javascript
浅谈javascript中的 “ && ” 和 “ || ”
2017/02/02 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
Python输出汉字字库及将文字转换为图片的方法
2016/06/04 Python
Python实现拷贝/删除文件夹的方法详解
2018/08/29 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
服装厂厂长职责
2013/12/16 职场文书
行政工作个人的自我评价
2014/02/13 职场文书
私人会所最新创业计划书范文
2014/03/24 职场文书
降消项目实施方案
2014/03/30 职场文书
演讲比赛策划方案
2014/06/11 职场文书
法学自荐信
2014/06/20 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
大学军训通讯稿
2015/07/18 职场文书
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技