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实现计算文件夹下.h和.cpp文件的总行数
Apr 23 Python
python3操作mysql数据库的方法
Jun 23 Python
python使用threading获取线程函数返回值的实现方法
Nov 15 Python
微信跳一跳辅助python代码实现
Jan 05 Python
几种实用的pythonic语法实例代码
Feb 24 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
使用 Python 实现文件递归遍历的三种方式
Jul 18 Python
Python 二叉树的层序建立与三种遍历实现详解
Jul 29 Python
Python实现微信机器人的方法
Sep 06 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
Python3爬虫中Splash的知识总结
Jul 10 Python
Python 实现绘制子图及子图刻度的变换等问题
May 31 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(3) php 函数
2010/02/15 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
React创建组件的三种方式及其区别
2017/01/12 Javascript
canvas知识总结
2017/01/25 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
vue实现登录拦截
2020/06/29 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
Python3基础之基本数据类型概述
2014/08/13 Python
python使用pil生成图片验证码的方法
2015/05/08 Python
Python实现读取json文件到excel表
2017/11/18 Python
Python内建模块struct实例详解
2018/02/02 Python
Python内置函数reversed()用法分析
2018/03/20 Python
Python基于Floyd算法求解最短路径距离问题实例详解
2018/05/16 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
pycharm 安装JPype的教程
2019/08/08 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
2019/11/19 Python
GitHub上值得推荐的8个python 项目
2020/10/30 Python
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
英国著名药妆店:Superdrug
2021/02/13 全球购物
2013年大学生的自我鉴定
2013/10/24 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
初三学生评语大全
2014/04/24 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
公司年会策划方案
2014/05/17 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
医院保洁员管理制度
2015/08/05 职场文书
青少年法制教育心得体会
2016/01/14 职场文书