Python的内置函数sorted

sorted() 函数作用:

  对所有可迭代的对象进行排序操作

sort与sortes的区别:

  sort是应用在list上方法,返回的是对已经存在的列表进行操作,无返回值。

  sorted可以对所有可迭代的对象进行排序操作。返回的是新的一个list,而不是在原来的基础上进行的操作。

语法:

sorted(iterable[, cmp[, key[, reverse]]])

参数说明:

  • iterable -- 可迭代对象。
  • cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

返回值:

返回重新排序的列表。

实例:

>>>a = [5,7,6,3,4,1,2]

>>> b = sorted(a) # 保留原列表

>>> a

[5, 7, 6, 3, 4, 1, 2]

>>> b

[1, 2, 3, 4, 5, 6, 7]

 

>>> L=[('b',2),('a',1),('c',3),('d',4)] 

>>> sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) # 利用cmp函数

[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

>>> sorted(L, key=lambda x:x[1]) # 利用key

[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

 

>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]

>>> sorted(students, key=lambda s: s[2]) # 按年龄排序

[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

>>> sorted(students, key=lambda s: s[2], reverse=True) # 按降序

[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]    #返回由tuple组成的list

 

用 operator 函数进行多级排序 

>>> from operator import itemgetter, attrgetter  

>>> sorted(students, key=itemgetter(1,2))  # sort by grade then by age  

[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]  

 

对由字典排序 ,返回由tuple组成的List,不再是字典。

>>> d = {'data1':3, 'data2':1, 'data3':2, 'data4':4}  

>>> sorted(d.iteritems(), key=itemgetter(1), reverse=True)  

[('data4', 4), ('data1', 3), ('data3', 2), ('data2', 1)]  

上一篇:Docker部署zabbix


下一篇:switch语句的实现