一、基本形式

sorted(iterable[, cmp[, key[, reverse]]])

iterable.sort(cmp[, key[, reverse]])

参数解释:

(1)iterable指定要排序的list或者iterable,不用多说;

(2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如:

students为类对象的list,没个成员有三个域,用sorted进行比较时可以自己定cmp函数,例如这里要通过比较第三个数据成员来排序,代码可以这样写:

students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

sorted(students, key=lambda student : student[2])

(3)key为函数,指定取待排序元素的哪一项进行排序,函数用上面的例子来说明,代码如下:

sorted(students, key=lambda student : student[2])

key指定的lambda函数功能是去元素student的第三个域(即:student[2]),因此sorted排序时,会以students所有元素的第三个域来进行排序。

二、普通用法:

1.原址排序

1)列表有自己的sort方法,其对列表进行原址排序,既然是原址排序,那显然元组不可能拥有这种方法,因为元组是不可修改的。

x = [4, 6, 2, 1, 7, 9]

x.sort()

print x # [1, 2, 4, 6, 7, 9]

2.副本排序

1)[:]分片方法

x =[4, 6, 2, 1, 7, 9]

y = x[ : ]

y.sort()

print y #[1, 2, 4, 6, 7, 9]

print x #[4, 6, 2, 1, 7, 9]

注意:y = x[:] 通过分片操作将列表x的元素全部拷贝给y,如果简单的把x赋值给y:y = x,y和x还是指向同一个列表,并没有产生新的副本。

2)sorted方法

sorted返回一个有序的副本,并且类型总是列表,如下:

x =[4, 6, 2, 1, 7, 9]

y = sorted(x)

print y #[1, 2, 4, 6, 7, 9]

print x #[4, 6, 2, 1, 7, 9]

print sorted('Python') #['P', 'h', 'n', 'o', 't', 'y']

三、高级用法

1.自定义cmp比较函数

def comp(x, y):

if x < y:

return 1

elif x > y:

return -1

else:

return 0

nums = [3, 2, 8 ,0 , 1]

nums.sort(comp)

print nums # 降序排序[8, 3, 2, 1, 0]

nums.sort(cmp) # 调用内建函数cmp ,升序排序

print nums # 降序排序[0, 1, 2, 3, 8]

2.自定义key和reverse

1.reverse实现降序排序,需要提供一个布尔值,默认为False(升序排列)。

2.key在使用时必须提供一个排序过程总调用的函数:

alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')]

# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:

print sorted(alist, cmp = None, key = lambda x:(int(x[2]), int(x[1])), reverse = False)

-------------------------------------------------------------------------------------------

[('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')]

四、operator.itemgetter函数

operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号(即需要获取的数据在对象中的序号),下面看例子。

a = [1,2,3]

>>> b=operator.itemgetter(1) //定义函数b,获取对象的第1个域的值

>>> b(a)

2

>>> b=operator.itemgetter(1,0) //定义函数b,获取对象的第1个域和第0个的值

>>> b(a)

(2, 1)

要注意,operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。

itemgetter在sort中的用法:

from operator import itemgetter

alist = [('2', '3', '10'), ('1', '2', '3'), ('5', '6', '7'), ('2', '5', '10'), ('2', '4', '10')]

# 多级排序,先按照第3个元素排序,然后按照第2个元素排序:

print sorted(alist, cmp = None, key = itemgetter(2, 1), reverse = False)

print sorted(alist, cmp = None, key = lambda x:itemgetter(2, 1)(x), reverse = False)

print sorted(alist, cmp = None, key = lambda x:map(int, itemgetter(2, 1)(x)), reverse = False)

--------------------------------------------------------------------------------------------------

[('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')]

[('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10'), ('1', '2', '3'), ('5', '6', '7')]

[('1', '2', '3'), ('5', '6', '7'), ('2', '3', '10'), ('2', '4', '10'), ('2', '5', '10')]

以上所述是小编给大家介绍的Python中的sort()方法使用基础 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

在python中使用sort_Python中的sort()方法使用基础教程相关推荐

  1. WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭

    原文:WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭 在我们开发WCF项目的时候,常常会碰到一些莫名其妙的错误,有时候如果根据它的错误提示信息,一般很难定位到具体的问题所在,而 ...

  2. Python中的sort()方法使用基础

    一.基本形式 sorted(iterable[, cmp[, key[, reverse]]])iterable.sort(cmp[, key[, reverse]]) 参数解释: (1)iterab ...

  3. JavsScript中比较大小总结---基于sort()方法

    JS中的sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串,以确定如何排列. 例如: let values = [0 ,1 , 5 , 10 ,15]; values ...

  4. 关于C++中vector和set使用sort方法进行排序

    C++中vector和set都是非常方便的容器, sort方法是algorithm头文件里的一个标准函数,能进行高效的排序,默认是按元素从小到大排序 将sort方法用到vector和set中能实现多种 ...

  5. python中delete怎么用_python删除np.deletePython基础教程05 - 缩进和选择

    缩进 Python最具特色的是用缩进来标明成块的代码.我下面以if选择结构来举例.if后面跟随条件,如果条件成立,则执行归属于if的一个代码块. 先看C语言的表达方式(注意,这是C,不是Python! ...

  6. word7计算机搜索设置,win7系统下word文档中进行查找和替换的方法【图文教程】...

    在win7系统电脑中,我们经常会用到word软件来编辑一些文档,已经成为装机必备软件,而在使用word的时候会使用到多种编辑的处理方式,比如查找替换功能,尤其是在长篇的文档中,当需要替换某些字或符号的 ...

  7. python 用if判断一个数是不是整数_Python基础教程07-函数和模块的使用

    在讲解本章节的内容之前,我们先来研究一道数学题,请说出下面的方程有多少组正整数解. x1+x2+x3+x4=8 事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案.想到这一点问题的 ...

  8. python是一种面向____的高级语言_Python 基础教程Python是一种解释型、面向对象、动...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Python 基础教程 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底 ...

  9. python语言中内置的字符串排版方法_python基础知识(python内置数据类型-字符串)...

    python中的字符串 字符串基本特点 字符串的本质是字符序列.python中的字符串是不可变的,无法对原字符串做任何修改(不能用下标赋值的方式去改变字符串).但是可以将字符串的一部分赋值创建新的字符 ...

最新文章

  1. 大家说火箭进决赛的机会有多大?
  2. 牛客网 最短路 Floyd算法 Dijkstra算法 Java大数
  3. 数据库SQL语言从入门到精通--Part 3--SQL语言基础知识
  4. 直播带货,碾压无数上市公司
  5. 147. Insertion Sort List
  6. java实现系统参数的存储_基于ZooKeeper,Spring设计实现的参数系统
  7. 原生js三种选项卡效果(滑动)
  8. python 将txt文件转换为excel_Python实现读取txt文件并转换为excel的方法示例
  9. RS422-RS485-RS232标准接线
  10. Matlab fspecial滤波函数
  11. Word2010为图片批量插入题注
  12. content=IE=Edge
  13. 2019第九届蓝桥杯大赛个人赛决赛真题C语言B组——调手表
  14. 十个数字内的最小绝对值
  15. IT人生 需要指引[转]
  16. 1、Java好的书籍
  17. 农夫山泉基于SAP SMP移动应用案例分析
  18. python 爬取搞笑视频_爬虫篇 | 用Python爬超级搞笑的视频
  19. 进制转换器java程序_Java实现复杂的进制转换器功能示例
  20. 机器人工程的工作与考研之困惑“取舍”

热门文章

  1. 2020年什么名字最受欢迎?前面“奕辰”你别走
  2. 从老赖们“维权”,看拍拍贷的底色
  3. 拼购电商不是团购,但扎的的却是三四五线城市老百姓的心
  4. 父亲节用计算机给惊喜,2015父亲节的惊喜作文:给爸爸特殊的礼物
  5. 晓庄学院计算机科学分数,2016南京晓庄学院艺术类专业录取分数线
  6. 机架搭建_【新阁教育】穷学上位机系列——搭建STEP7仿真环境
  7. Swift Playgrounds Learn to Code 2 final project Pyramid
  8. 详解Django中Request对象的相关用法
  9. Python中经典类和新式类的区别
  10. C语言数据结构(大话数据结构——笔记2)第四章:栈与队列