Python排序介绍

Python排序介绍

本文简单记录了Python中的内建函数 sort() 和 sorted() 的使用方法,以及它们在 Python2 和 Python3 中的区别。

概述

内建函数 sort() 和 sorted() 都可以对一个List进行排序,它们的区别是,sort 对 List 本身进行排序(sorts the list in place),没有返回,而 sorted 会返回经过排序后的 list。两者的参数一样,所进行的排序都是稳定的。

>>> l = [2, 4, 6, 1, 3]
>>> l.sort()
>>> l
[1, 2, 3, 4, 6]
>>> l = [2, 4, 6, 1, 3]
>>> sorted(l)
[1, 2, 3, 4, 6]
>>> l
[2, 4, 6, 1, 3]

Python3 中的 sorted

Python3 中,内建方法 sorted 定义是:

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

其中

  • iterable 代表待排序数据
  • key 是一个函数,该函数接收一个参数,即iterable 中的每一项,返回需要进行比较的值。默认为None,即比较 item 本身。
  • reverse 是布尔类型,reverse 为 True 时反向排序。默认为 False 。

示例:

>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),]
>>> sorted(students, key=lambda x : x[0])
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
>>> sorted(students, key=lambda x : x[2])
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
>>> sorted(students, key=lambda x : x[2], reverse=True)
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
>>>
>>> d = {'data1':3, 'data2':1, 'data3':2, 'data4':4}
>>> sorted(d.items(), key=lambda x : x[1])
[('data2', 1), ('data3', 2), ('data1', 3), ('data4', 4)]

Python2 中的 sorted

Python2 中,内建方法 sorted 定义是:

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

其中

  • iterable 代表待排序数据
  • cmp 是一个函数,它接收两个参数,如 cmp(a, b) ,返回负值、0 或者正值,分别代表 a 小于、等于、大于 b
  • key 是一个函数,该函数接收一个参数,即iterable 中的每一项,返回需要进行比较的值。默认为None,即比较 item 本身
  • reverse 是布尔类型,reverse 为 True 时反向排序。默认为 False

示例:

>>> sorted(students, cmp=lambda x,y : cmp(x[2], y[2]))
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

总结

Python3 相对于 Python2,去掉了 cmp 参数,简化了函数的使用。对于待比较的两个值如 a 和 b ,只使用 < 符号的比较结果。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值