前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python之排序

Python之排序

作者头像
py3study
发布2020-01-13 13:00:22
2870
发布2020-01-13 13:00:22
举报
文章被收录于专栏:python3python3

列表内置的排序方法sort():

代码语言:javascript
复制
>>> name
[('a', 5), ('c', 3), ('b', 4), ('e', 1), ('d', 2)]
>>> name.sort()
>>> name
[('a', 5), ('b', 4), ('c', 3), ('d', 2), ('e', 1)] #对列表排序,默认根据元组的第一个元素排序,该操作直接改变原列表中元素的顺序
>>> name
[('a', 5), ('c', 3), ('b', 4), ('e', 1), ('d', 2)]
>>> name.sort(key=lambda x: x[1])
>>> name
[('e', 1), ('d', 2), ('c', 3), ('b', 4), ('a', 5)] #通过key指定排序的依据。
>>> name
[('a', 5), ('c', 3), ('b', 4), ('e', 1), ('d', 2)]
>>> name.sort(key=operator.itemgetter(1))
>>> name
[('e', 1), ('d', 2), ('c', 3), ('b', 4), ('a', 5)]
#这中方式的代码效率更高
代码语言:javascript
复制
L.sort(cmp=None, key=None, reverse=False)
#对列表L中的所有元素进行排序,key是一个键函数,在排序过程中,进行比较之前,每个元素都经过函数处理,函数的返回值作为排序比较的依据,reverse是一个反转标志,默认是False,表示升序排序,当值设置为True时表示倒序排序。

列表方法sort()排序会在列表自身上进行操作,有时我们不希望改变原列表。这样可以用python的内置函数sorted()

代码语言:javascript
复制
>>> help(sorted)
Help on built-in function sorted in module __builtin__:
sorted(...)
    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
iterable:是可迭代类型;
cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:排序规则. reverse = True 或者 reverse = False,有默认值。
返回值:是一个经过排序的可迭代类型,与iterable一样。
代码语言:javascript
复制
>>> name
[('a', 5), ('c', 3), ('b', 4), ('e', 1), ('d', 2)]
>>> sorted(name)
[('a', 5), ('b', 4), ('c', 3), ('d', 2), ('e', 1)]
>>> sorted(name,key=operator.itemgetter(1))
[('e', 1), ('d', 2), ('c', 3), ('b', 4), ('a', 5)]
>>> name
[('a', 5), ('c', 3), ('b', 4), ('e', 1), ('d', 2)]
sorted的返回值是新列表,原列表没任何改变。

operator模块的itemgetter函数介绍

代码语言:javascript
复制
class itemgetter(__builtin__.object)
 |  itemgetter(item, ...) --> itemgetter object
 | 
 |  Return a callable object that fetches the given item(s) from its operand.
 |  After f = itemgetter(2), the call f(r) returns r[2].
 |  After g = itemgetter(2, 5, 3), the call g(r) returns (r[2], r[5], r[3])
代码语言:javascript
复制
>>> name
[('a', 5), ('c', 3), ('b', 4), ('e', 1), ('d', 2)]
>>> key = operator.itemgetter(3)
>>> key(name)
('e', 1)
#其中的调用关系
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档