发布时间:2019-08-08 07:44:18编辑:auto阅读(1437)
列表内置的排序方法sort():
>>> 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)]
#这中方式的代码效率更高L.sort(cmp=None, key=None, reverse=False) #对列表L中的所有元素进行排序,key是一个键函数,在排序过程中,进行比较之前,每个元素都经过函数处理,函数的返回值作为排序比较的依据,reverse是一个反转标志,默认是False,表示升序排序,当值设置为True时表示倒序排序。
列表方法sort()排序会在列表自身上进行操作,有时我们不希望改变原列表。这样可以用python的内置函数sorted()
>>> 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一样。>>> 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函数介绍
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])
>>> name
[('a', 5), ('c', 3), ('b', 4), ('e', 1), ('d', 2)]
>>> key = operator.itemgetter(3)
>>> key(name)
('e', 1)
#其中的调用关系
上一篇: Python学习——版本的差异
下一篇: python的基础语法
51277
50726
41327
38139
32601
29507
28360
23226
23194
21519
1592°
2313°
1922°
1862°
2190°
1905°
2595°
4353°
4207°
2986°