为什么 lambda 函数不接受与 sorted() 绑定的参数
Why doesn't lambda function accept parameter in bond with sorted()
Students = (("Squidward", "F", 60),
("Sandy", "A", 33),
("Patrick","D", 36),
("Spongebob","B", 20),
("Mr.Krabs","C", 78))
sort_grades = lambda grades: grades[1]
Sorted_Students = sorted(Students,key=sort_grades)
lambda 函数有一个 参数等级 。为什么我们不将 Sorted_Students 中的任何参数作为 key= 传递,这样 在 [ 之后就没有括号 =22=]。即使没有将任何参数作为“等级”传递,这段代码也能以某种方式工作,所以我们甚至没有 运行 lambda 函数(没有参数怎么办 - 不可能)。请详细说明这段代码是如何最明确地工作的,这样我愚蠢的大脑可以从你的评论中得到一些东西
sorted
的 key
参数是一个将应用于元素以便将它们相互比较的函数。
因此,我们只传递函数本身而不调用它。
我建议你下次先阅读文档:)
https://docs.python.org/3/library/functions.html#sorted
完成, functions in python might be passed as argument just as any object. An other function from the python standard library that uses this feature is map()。这个函数接受一个可迭代对象和一个函数,以及 return 一个函数结果的生成器,该函数的结果应用于可迭代对象的每个元素。实现方式:
def map(iterable, f): # Note : f is a function!
return (f(i) for i in iterable) # and is indeed called
并且可以这样使用:
print(list(map([1,2,3,4,5], lambda x: x*x))) #we convert the generator to a list so it displays nicely
#it prints in the shell : [1,4,9,16,25]
Students = (("Squidward", "F", 60),
("Sandy", "A", 33),
("Patrick","D", 36),
("Spongebob","B", 20),
("Mr.Krabs","C", 78))
sort_grades = lambda grades: grades[1]
Sorted_Students = sorted(Students,key=sort_grades)
lambda 函数有一个 参数等级 。为什么我们不将 Sorted_Students 中的任何参数作为 key= 传递,这样 在 [ 之后就没有括号 =22=]。即使没有将任何参数作为“等级”传递,这段代码也能以某种方式工作,所以我们甚至没有 运行 lambda 函数(没有参数怎么办 - 不可能)。请详细说明这段代码是如何最明确地工作的,这样我愚蠢的大脑可以从你的评论中得到一些东西
sorted
的 key
参数是一个将应用于元素以便将它们相互比较的函数。
因此,我们只传递函数本身而不调用它。
我建议你下次先阅读文档:) https://docs.python.org/3/library/functions.html#sorted
完成
def map(iterable, f): # Note : f is a function!
return (f(i) for i in iterable) # and is indeed called
并且可以这样使用:
print(list(map([1,2,3,4,5], lambda x: x*x))) #we convert the generator to a list so it displays nicely
#it prints in the shell : [1,4,9,16,25]