码迷,mamicode.com
首页 > 编程语言 > 详细

Python排序介绍

时间:2015-06-11 14:39:45      阅读:156      评论:0      收藏:0      [点我收藏+]

标签: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 ,只使用 < 符号的比较结果。

Python排序介绍

标签:python

原文地址:http://blog.csdn.net/gaopenghigh/article/details/46456947

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!