前言

python的排序有两个方法,一个是list对象的sort方法,另外一个是builtin函数里面sorted,主要区别:

  • sort仅针对于list对象排序,无返回值, 会改变原来队列顺序
  • sorted是一个单独函数,可以对可迭代(iteration)对象排序,不局限于list,它不改变原生数据,重新生成一个新的队列

本篇是基于python3.6讲解的,python2会多一个cmp参数,cmp函数在python3上已经丢弃了
cmp(x,y)函数用于比较2个对象,如果 x < y返回 -1, 如果x == y返回 0, 如果 x > y 返回 1。

sort方法

1.sort是list对象的方法,通过.sort()来调用

>>> help(list.sort)
Help on method_descriptor:sort(...)L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*>>>

2.参数说明:

  • key 用列表元素的某个属性或函数进行作为关键字(此函数只能有一个参数)
  • reverse 排序规则. reverse = True 降序 或者 reverse = False 升序,默认升序
  • return 无返回值

3.使用方法介绍

# coding:utf-8a = [-9, 2, 3, -4, 5, 6, 6, 1]# 按从小到大排序
a.sort()
print(a)  # 结果:[-9, -4, 1, 2, 3, 5, 6, 6]# 按从大到小排序
a.sort(reverse=True)
print(a)  # 结果:[6, 6, 5, 3, 2, 1, -4, -9]

4.key参数接受的是函数对象,并且函数只能有一个参数,可以自己定义一个函数,也可以写个匿名函数(lambda)

# coding:utf-8
# 遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
# 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
a = [-9, 2, 3, -4, 5, 6, 6, 1]
# 按绝对值排序
def f(x):return abs(x)
a.sort(key=f)
print(a)   # 结果:[1, 2, 3, -4, 5, 6, 6, -9]# 1、list对象是字符串
b = ["hello", "helloworld", "he", "hao", "good"]
# 按list里面单词长度倒叙
b.sort(key=lambda x: len(x), reverse=True)
print(b)   # 结果:['helloworld', 'hello', 'good', 'hao', 'he']# 2、.list对象是元组
c = [("a", 9), ("b", 2), ("d", 5)]# 按元组里面第二个数排序
c.sort(key=lambda x: x[1])
print(c)  # 结果:[('b', 2), ('d', 5), ('a', 9)]# 3、list对象是字典
d = [{"a": 9}, {"b": 2}, {"d":5}]d.sort(key=lambda x: list(x.values())[0])
print(d)  # 结果:[{'b': 2}, {'d': 5}, {'a': 9}]

sorted函数

1.sorted是python里面的一个内建函数,直接调用就行了

>>> help(sorted)
Help on built-in function sorted in module builtins:sorted(iterable, key=None, reverse=False)Return a new list containing all items from the iterable in ascending order.A custom key function can be supplied to customize the sort order, and thereverse flag can be set to request the result in descending order.>>>

2.参数说明

  • iterable 可迭代对象,如:str、list、tuple、dict都是可迭代对象(这里就不局限于list了)
  • key 用列表元素的某个属性或函数进行作为关键字(此函数只能有一个参数)
  • reverse 排序规则. reverse = True 降序或者 reverse = False 升序,默认升序
  • return 有返回值值,返回新的队列

3.使用方法介绍

# coding:utf-8
# 遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
# 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
a = [-9, 2, 3, -4, 5, 6, 6, 1]# 按从小到大排序
b = sorted(a)
print(a)   # a不会变
print(b)   # b是新的队列 [-9, -4, 1, 2, 3, 5, 6, 6]# 按从大到小排序
c = sorted(a, reverse=True)
print(c)  # 结果:[6, 6, 5, 3, 2, 1, -4, -9]

4.可迭代对象iterable都可以排序,返回结果会重新生成一个list

# 字符串也可以排序s = "hello world!"
d = sorted(s)
print(d)  # 结果:[' ', '!', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']# 元组也可以排序
t = (-9, 2, 7, 3, 5)
n = sorted(t)
print(n)  # 结果:[-9, 2, 3, 5, 7]# dict按value排序
f = {"a": 9, "b": 2, "d": 5}
g = sorted(f.items(), key=lambda x: x[1])
print(g)  # 结果:[('b', 2), ('d', 5), ('a', 9)]

python排序的两个方法相关推荐

  1. python列表的排序方法_pythonlist排序的两种方法及实例

    本文主要介绍了python list排序的两种方法及实例讲解.具有很好的参考价值,下面一起来看下吧 对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排 ...

  2. python list列表排序的两种方法及实例讲解

    对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...

  3. python list排序的两种方法及实例讲解

    对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...

  4. python列表排序方法-python list排序的两种方法及实例讲解

    对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...

  5. list排序方法python_python list 排序的两种方法及实例讲解

    对 list 进行排序,Python 提供了两个方法: 方法1. 用 list 的内建函数 list.sort 进行排序 list.sort(func=None, key=None, reverse= ...

  6. python画图-python画图的两种方法

    python如何画图?这里给大家介绍两款python绘图的库:turtle和Matplotlib. 1 安装turtle Python2安装命令:pip install turtule Python3 ...

  7. Python案例:两种方法实现词频统计

    Python案例:两种方法实现词频统计 一.利用字典实现词频统计 1.编写源代码 2.查看运行结果 二.利用collections的Counter模块实现词频统计 <

  8. 计算机word降序排列怎么做,word中怎么进行排序的两种方法

    word文档中表格除了作为我们的编辑和展示功能之外,还可以进行排序功能,十分方便,那么下面就由学习啦小编给大家分享下word中进行排序的技巧,希望能帮助到您. word中进行排序方法一: 步骤一:将光 ...

  9. excel如何排序?两个方法汇总

    排序是Excel中最常用的功能之一,也是数据分类和汇总操作的重要前提.excel如何排序?本文介绍如何给Excel里面的数据进行排序,方法很简单.感兴趣的朋友,赶紧来看看吧! 操作环境: 演示机型:D ...

最新文章

  1. 经典算法面试题目-判断s2是否是s1的旋转字符串(1.8)
  2. 皮一皮:精致的人生,哪怕拔火罐也要搭配衣服出门...
  3. S3C2440时钟体系结构
  4. Hibernate的配置详解
  5. dbnetlib sqlserver不存在或拒绝访问_SQL Server数据库损坏和修复
  6. mysql semisync 恢复_mysql半同步复制(semi_sync_replication)搭建及使用
  7. python安装不上怎么办_python依赖安装失败怎么办
  8. 昆特牌Online——客户端用到的一些技术
  9. OC开发实例变量的访问控制详解
  10. x264编码详细文字全过程
  11. c语言指针动态分配数组长度,C语言安全之数组长度与指针实例解析
  12. FPGA(FIR)数字信号处理
  13. javaparser
  14. pygame详细安装教程
  15. 基恩士扫码枪SR2000系列通讯
  16. OverFeat笔记
  17. linux查cer证书信息,openssl 查看证书
  18. ZMQ专题学习之六:libzmq的订阅代理模式通信方式
  19. 一份Slide两张表格带你快速了解目标检测
  20. 超详细的Latex快速基础入门 (第二节)【关于latex命令的一些知识】

热门文章

  1. Qt编写OpenMP程序--HelloWorld
  2. SQL获取刚插入的记录的自动增长列ID的值
  3. Mozilla 构建系统(转)
  4. file的getPath getAbsolutePath和getCanonicalPath的不同
  5. selenium search
  6. html 文本强调,CSS Emphasis Marks 文本强调标记
  7. idea验证失败_SVN提示https证书验证失败解决办法
  8. FTP的dos命令使用方法
  9. win7 系统盘下AppData文件夹中Local和Roaming分别有什么作用?
  10. ABAP源码--当前及可用库存查询