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 ,只使用 <
符号的比较结果。
时间: 2024-08-04 18:29:13