sort() 是Python列表的一个内置的排序方法,list.sort() 方法排序时直接修改原列表,返回None;

sort() 是Python内置的一个排序函数,它会从一个迭代器返回一个排好序的新列表。

相比于 sort(),sorted() 使用的范围更为广泛,但是如果不需要保留原列表,sort更有效一点。另外,sort() 只是列表的一个方法,只适用于列表,而sorted() 函数接受一切迭代器,返回新列表。
两者的函数形式分别如下(Python3.5.2):

sorted(iterable[, key][, reverse])
list.sort(*, key=None, reverse=None)

这两个方法有以下 2 个共同的参数:

  • key 是带一个参数的函数,返回一个值用来排序,默认为 None。这个函数只调用一次,所以fast。
  • reverse 表示排序结果是否反转
    看例子:
>>> a = (1,2,4,2,3)   # a 是元组,故不能用sort() 排序
>>> a.sort()
Traceback (most recent call last):File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'sort'
>>> sorted(a)    # sorted() 可以为元组排序,返回一个新有序列表
[1, 2, 2, 3, 4]>>> a=['1',1,'a',3,7,'n']
>>> sorted(a)
[1, 3, 7, '1', 'a', 'n']
>>> a     # sorted() 不改变原列表
['1', 1, 'a', 3, 7, 'n']
>>> print a.sort()
None
>>> a      # a.sort()直接修改原列表
[1, 3, 7, '1', 'a', 'n']

因此如果实际应用过程中需要保留原有列表,使用 sorted() 函数较为适合,否则可以选 择 sort() 函数,因为 sort() 函数不需要复制原有列表,消耗的内存较少,效率也较高。

sorted() 函数功能非常强大,它可以方便地针对不同的数据结构进行排序,从而满足不同需求。例子如下:

  • 对字典进行排序
>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})     # 根据字典键排序
[1, 2, 3, 4, 5]
>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}.values())    # 根据字典值排序
['A', 'B', 'B', 'D', 'E']
  • 对多维列表排序
>>> student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10)]
>>> sorted(student_tuples, key = lambda student: student[0]) # 对姓名排序
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
>>> sorted(student_tuples, key = lambda student: student[2])  # 年龄排序
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
  • 调用operator模块中的 itemgetter() 可以实现根据多个参数排序:
>>> sorted(student_tuples, key = itemgetter(2))  # 根据年龄排序
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
>>> sorted(student_tuples, key = itemgetter(1, 2))  # 根据成绩和年龄排序
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
>>> sorted(student_tuples, key = itemgetter(1, 2), reverse=True) # 反转排序结果
[('jane', 'B', 12), ('dave', 'B', 10), ('john', 'A', 15)]

ps: itemgetter 返回一个函数,实现取元素的功能。比如
f = itemgetter(2),调用 f(r) 返回 r[2];
f = itemgetter(2, 5, 3),调用 f(r) 返回元组 (r[2], r[5], r[3]).

python 排序函数 sort sorted 简介相关推荐

  1. python排序之sort和sorted

    python排序之sort和sorted 在使用python的时候很多时候需要用到排序操作,自己挨个去排太麻烦,而且效率也比较低下.因此学会使用Python自带的排序函数就显得尤为必要了. pytho ...

  2. Python排序函数用法

    Python排序函数完美体现了Python语言的简洁性,对于List对象,我们可以直接调用sort()函数(这里称为"方法"更合适)来进行排序,而对于其他可迭代对象(如set,di ...

  3. python排序函数

    python 基础的排序函数 sort .sorted .argsort 一.sort .sorted 1.简单升序排序直接调用sorted函数即可 sort()方法仅定义在list中 ls = li ...

  4. python中的sort,sorted

    python中的sort,sorted 文章目录 python中的sort,sorted 两者区别 用法: 用法示例 对字典排序: 对列表排序: 两者区别 sorted有返回值,而sort没有返回值. ...

  5. R语言数据排序函数sort, order rank实战

    R语言数据排序函数sort, order & rank实战 目录 R语言数据排序函数sort, order & rank实战 #sort vs. order vs. rank函数基础 ...

  6. C++ 排序函数 sort(),qsort()的用法

    想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~ 所以自己总结了一下,首先看sort函数见下表: 函数名 功能描述 sort 对给定区 ...

  7. python 数组排序sort_Python之排序函数sort() 和 sorted()

    sort() 是Python列表的一个内置的排序方法,list.sort() 方法排序时直接修改原列表,返回None: sort() 是Python内置的一个排序函数,它会从一个迭代器返回一个排好序的 ...

  8. 第8.23节 Python中使用sort/sorted排序与“富比较”方法的关系分析

    一. 引言 <第8.21节 Python中__lt__.gt__等 "富比较"("rich comparison")方法用途探究>和<第8.2 ...

  9. 排序函数(sort()、sorted()、argsort()函数)

    python的内建排序函数有 sort.sorted两个. 1.基础的序列升序排序直接调用sorted()方法即可 1 ls = list([5, 2, 3, 1, 4]) 2 new_ls = so ...

最新文章

  1. Python中的线程间通信
  2. ICLR2020 | 如何判断两个神经网络学到的知识是否一致
  3. 互联网晚报 | 10月23日 星期六 | 恒大宣布全面实施现楼销售;华为开发者大会2021开幕;家乐福中国首家会员店正式开业...
  4. python语言发展历时_编程语言十年发展史
  5. Windows MongoDB安装配置
  6. 跟我学算法-pca(降维)
  7. 邢波老师致广大学员的一封信(2010-10-26)
  8. 用线程安全随机数解决Random在多线程中随机性重复的问题
  9. 甩一个Microsoft office visio 2013的百度云连接
  10. Java 18 新特性
  11. Greater New York Region 2015 G compositions dp
  12. nginx 使用配置解释
  13. 你可以把Linux内核当成一家软件外包公司的老板
  14. 12、加权平均队列(WFQ-Weight Fair Queue)算法
  15. Python OpenSSL 解析证书
  16. Redis指南——03入门(上)
  17. jquery--遍历
  18. 心理学大白话:科学理解束缚我们的常见思维
  19. Python神秘的魔法函数
  20. Android平台基于asmack实现XMPP协议中的PubSub机制

热门文章

  1. 使用Movie Maker制作视频相册
  2. 分享Intel的安全运营中心最佳实践
  3. FaaS — Serverless Computing(无服务器计算)
  4. 5G NGC — PCF Npcf_PolicyAuthorization Service
  5. Linux 操作系统原理 — 系统启动流程
  6. CentOS 6.5 安装 Mysql 5.7.* (tar.gz)
  7. asp.net夜话之九:验证控件(上)
  8. 《JavaScript高级程序设计》节点层次和DOM操作技术
  9. [20170513]update结果集.txt
  10. PLSQL_解析过程及硬解析和软解析的区别(案例)