发布时间:2019-08-08 07:44:18编辑:auto阅读(1304)
列表内置的排序方法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的基础语法
48876
47943
38724
35865
30292
27048
26075
20911
20717
19076
515°
613°
618°
620°
597°
581°
650°
718°
839°
948°