I have a doubt in the following code like i just want to know how the
a.sort(key= lambda marks: marks[1])
function able to shot and return the nested list again. can any explain this ?
n=int(raw_input())
a=[]
for i in range(n):
s=raw_input()
v=float(raw_input())
a.append([s,v])
a.sort(key= lambda marks: marks[1])
print a
答案 0 :(得分:1)
a.sort(key= lambda marks: marks[1])
这相当于:
def getOneth(marks):
return marks[1]
a.sort(k=getOneth)
这个想法是a
是可索引事物的列表。 a
将按每个元素中第二件事的值进行排序
编辑:lambda
中sort
的工作原理
如果要对事物列表进行排序,例如从最小到最大,您需要评估每件事情。只有当你进行这样的评估时,你才能决定在其他事情之前/之后发生的事情
现在,让我们假设您有一个要从最小到最大排序的数字列表。嗯,这很简单 - 一个数字的价值立即显而易见。但是,让我们说你想要对一群人进行排序 - 你可以根据每个人的身高,或者通过他们的名字或任何其他可测量的属性对这个群体进行排序。因此,当您有这样的人员列表时,您需要告诉sort
您将使用这样的属性。 key
属性允许您通过指定函数来执行此操作。 sort
将对列表中的每个元素使用该函数,以计算元素的值。因此,函数必然需要一个输入参数并返回描述该输入值的内容。由于我们不知道sort
如何以及何时评估每个列表元素,我们只需提供稍后可以根据需要调用的函数名称