当我们要对一串数字或者字母,进行大小比较排序时,如果少数个我们可以自行排序,但是当数字多达几十个,甚至几百个时,人为排序就会使得效率低下,甚至有可能出错。内置函数sorted()就解决了这一问题。
实例解释:
#为表排序
>>>lst = [5, 3, 7, 0]
>>>print(sorted(lst))
[0, 3, 5, 7] #输出排好序的新表
#为元组排序
>>>tup = (5, 3, 7, 0)
>>>print(sorted(tup))
[0, 3, 5, 7] #同样输出排好序的表
#为字典排序
>>>dic = {'s':0, 'a':7}
>>>print(sorted(dic))
['a', 's'] #输出字典关键字的表,字母根据ASICC码进行排序,单词根据首字母以此往后比较
#表的sort()使用
>>>lst = [5, 3, 7, 0]
>>>lst.sort() #lst.sort()是对列表的操作,直接调用print(lst.sort()),返回None
>>>print(lst)
[5, 3, 7, 0] #调用print(lst)输出
注意:
TypeError: '<' not supported between instances of 'int' and 'str'。
#例如元组
>>>tup = (3,5)
>>>tup.sort()
AttributeError: 'tuple' object has no attribute 'sort'
实例解释:
#反转列表
>>>lst = [5, 3, 7, 0]
>>>print(reversed(lst))
##返回的是一个迭代器
>>>for i in reversed(lst):
print(i)
0
7
3
5
####其他序列情况类似,再次不一一展示
#使用reverse()进行反转
>>>print(lst.reverse())
None #类似于sort(),因为是操作,直接输出返回None
>>>lst.reverse()
>>>print(lst)
[0, 7, 3, 5]
#reverse + sort 使用
>>>lst.sort(reverse = True) #此时为 > 关系排序,默认为False
>>>print(lst)
[7, 5, 3, 0]
插在中间的小结:
Python2.4之后,list.sort() 和 sorted() 都增加了 key 关键字参数用来进行在指定位置上的比较。
实例解释:
#二元组(k,v)关于v的 < 关系进行排序,再根据 k 的 > 关系进行排序
>>>s = [(3, 7), (5,0), (9,7), (4,1)]
>>>print(sorted(s, key = lambda x : (x[1], -x[0])))
[(5, 0), (4, 1), (9, 7), (3, 7)]
调用key的时候我们定义了一个lambda函数,他的使用过程是:
字典可以调用dic.item()转换成二元组使用,类似的三元组等都可以通过关键字key按指定位置上的元素排序。