小菜鸟的python进阶之路 ------- sorted函数和sort函数

在Python中提供了两个方法可以的对给定的列表进行排序,有两种方法:

方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本

方法2.用built-in函数sorted进行排序,返回副本,原始输入不变

示例:

li = [5,3,2,4]
第一种sort方法:
li.sort(reverse=True)
print(li)

第二种sorted函数:
a=sorted(li)
print(a)

 

sort函数

sort(...)
    L.sort( key=None, reverse=False) -- stable sort *IN PLACE*;
    cmp(x, y) -> -1, 0, 1

注意,a.sort() 已改变其结构,b = a.sort() 是错误的写法!

sorted函数

sorted(iterable, /, *, key=None, reverse=False)
    Return a new list containing all items from the iterable in ascending order.

  • iterable:是可迭代类型;
  • key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;
  • reverse:排序规则. reverse = True  降序 或者 reverse = False 升序,有默认值。
  • 返回值:是一个经过排序的可迭代类型,与iterable一样。

参数说明:

(1)  key参数

 key也是接受一个函数,不同的是,这个函数只接受一个元素,形式如下:

def f(a):

     return len(a)

key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序

(2) reverse参数

接受False 或者True 表示是否逆序


练习1:按照元素长度排序

li = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
sorted(li,key=len)
print (li)

 

练习2:按照每个字典元素里面key为1的元素的值排序

li = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
def f2(x):
    return x[1]
print(sorted(li,key=f2))

练习3:对由tuple组成的List排序 

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

第一种方法:
print(sorted(students,key=lambda x:x[2]))



第二种方法:用operator函数来加快速度
from operator import itemgetter, attrgetter
print(sorted(students, key=itemgetter(2)))

 

猜你喜欢

转载自blog.csdn.net/sinceNow/article/details/86583910