sort排序
l = [2, 4, 1, 3, 8]
l.sort()
l
Out[19]: [1, 2, 3, 4, 8]
sort()的用法是:list.sort()
因此,使用sort会直接对list本身进行修改,不会保留原来的list。
在Python中使用help查看sort使用方法:
help(list.sort)
Help on method_descriptor:
sort(...)
L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*
(1) key参数
key接受一个函数,这个函数只接受一个元素,形式如下
def f(a):
return len(a)
key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序。
(2) reverse参数
接受False 或者True 表示是否逆序,默认为false。
举例如下:
L = [{1:5,3:4},{1:3,6:3},{1:1,2:4,5:6},{1:9}]
def f(x):
return len(x)
L.sort(key=f)
---------------------------------------------------------------
print(L)
[{1: 9}, {1: 5, 3: 4}, {1: 3, 6: 3}, {1: 1, 2: 4, 5: 6}]
sorted排序:
l = [2, 4, 1, 3, 8]
sorted(l)
Out[27]: [1, 2, 3, 4, 8]
l
Out[28]: [2, 4, 1, 3, 8]
可见,使用sorted排序的时候并未改变list本身。
sorted还可以对字典进行排序,但是默认是对key值进行排序的,返回的是对key值排好的list。
a = {'dadadsadfas': 0, 'awdawd': 1}
sorted(a)
Out[30]: ['awdawd', 'dadadsadfas']
要根据其他的值来排序的话,就要用到sorted的key参数了。
a = {'dadadsadfas': 0, 'awdawd': 1}
sorted(a)
#默认输出
Out[30]: ['awdawd', 'dadadsadfas']
result2 = sorted(a, key=lambda x:a[x])
#根据value值进行的排序
result2
Out[32]: ['dadadsadfas', 'awdawd']
sorted还有一个用法就是对复杂的元组进行排序,与对字典排序有点类似:
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda student : student[2])
Out[34]: [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
lambda用法:
lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
lambda所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。
lambda就是用来定义一个匿名函数的,如果还要给他绑定一个名字的话,就会显得有点画蛇添足,通常是直接使用lambda函数。如下所示:
add = lambda x, y : x+y add(1,2) # 结果为3
所以上面的例子其实就是定义了一个函数:
def f(student):
return student[2]
然后将元组一个一个输入进去并比较返回值,根据返回值进行排序。
参考链接:
https://www.cnblogs.com/hf8051/p/8085424.html