① python里students.sort(key=lambda x: x['name']),两个x的意思是什么
lambda x:x ['name']是一个匿名函数(俗称lambda表达式),冒号前面的x是函数的参数,sort函数会把列表的每个字典传给x,而x['name']是函数的函数体,意思是返回字典x的name键的值。
这个代码的意思就是按列表中每个字典的name键的升序来对列表排序。
其实,students.sort(key=lambda x:x['name'])就是相当于这样:
#先定义一个函数
def k(x):return x['name']
#key按关键字传参排序
students.sort(key=k)
② Python 二维列表,用sorted函数怎么多重排序
在历返历Python中,使用sorted函数对二维列表进行多重排序可以使用key参数。key参数接收一个函数,该函数接收一个列表元素作为参数世皮,返回一个用肢搜于排序的值。可以使用lambda函数来实现多重排序,例如:
sorted_list = sorted(my_list, key=lambda x:(x[1],x[2],x[0]))
这将按第1个元素,第2个元素,第3个元素的顺序对二维列表进行排序。
③ python的lambda形式的理解
lambda 创建一个匿名函数。冒号前面是传入参数,后面是一个处理传入参数的单行表达式。
调用lambda函数返回表达式的结果。
list的sort 同于内建函数sorted。它有三个参数cmp,key,reverse,均有默认值。
cmp是一个比较器,自定义比较器的话传入两个参数x,y,返回值限制为1(x>y), 0(x=y), -1(x<y)。默认是常规比较,数字比较,字符串比较等等。
key是对序列元素处理(比如问题中序列元素仍是序列,就可以再对序列取索引值),也就是sort的比较器实际接收到值是key处理后的结果(问题中实际参与比较的是1,2,3,4)。
reverse默认是False,意思是从小到大排序,传入True,就从大到小排。
④ python列表排序方法
列表的sort方法就是用来进行排序的。
主要就是两个参数,key,reverse
先说reverse,这个很简单,就是指出是否进行倒序排序:一般情况下,1排在2的前面,而倒序则相反。
key参数:一般它是一个函数,它接受列表中每一个元素,返回一个可用用于比较的值。
s=[1,2,3,4,5]
s.sort(key=lambda _: _**2%7)
print(s)
输出的是:[1, 3, 4, 2, 5]
如果看不懂lambda表达式,可以看这一段等价的写法:
def myfn(x):
....return (x * x) % 7
s=[1,2,3,4,5]
s.sort(key=myfn)
print(s)
输出的结果是一样的。
key使用的函数可以是自定义函数也可以pytho内置的函数,或者是某个类或者实例的方法,只要它能接受一个参数,返回一个可比较的值即可。比如这样:
s=[[1,2,4],[3,3,5],[1,1,1],[5,7,9]]
s.sort(key=max) # 直接使用max函数作为排序依据
print(s)
[[1, 1, 1], [1, 2, 4], [3, 3, 5], [5, 7, 9]]