将lambda转换为普通的def函数
我是一名初学编程的学生,目前正在观看Bro Code的Python教程。
他是这样写的:
我在想,如果用“def”来代替lambda该怎么写,我想我应该把它放在下一部分。
我试着这样做:
students = [("ab", "F", 60),
("man", "D", 21),
("yo", "A", 22),
("pope", "C", 32)]
def age(x):
return students.index(2)
a = sorted(students, key=age, reverse=True)
for e in a:
print(e)
当然,这样是行不通的,现在我卡住了。
编辑:在写这段话的时候,我突然明白我应该怎么做了,但现在我又不太理解了。
def age(x):
x = x[2]
return x
如果有人能给我解释一下,那就太好了,谢谢你们!
2 个回答
0
以下内容是对一个初步概念的简单说明:
f = lambda x: RETURN_VALUE
def f(x):
return RETURN_VALUE
唯一显著的区别是,在第一种情况下,f.__name__
显示的是 <lambda>
,而在第二种情况下,它显示的是 f
。
换句话说,任何可以用一个简单的 return
语句定义的函数,都可以用一个 lambda 表达式来定义,反之亦然。lambda 表达式的内容就是那个 return
语句去掉 return
这个关键词后的部分。
0
.index()
这个函数的作用和你想要的正好相反。给定一个列表
x = ["a", "b", "c", "d"]
如果你执行了
print(x.index("a"))
你会看到结果
> 0
因为在这个列表中,“a”是第0个位置。你接下来尝试并成功的函数是
print(x[0])
> "a"
这个函数会返回列表中那个位置的值。
顺便提一下,正如其他人提到的,你不需要把它赋值给x,你的函数可以直接是
def age(x):
return x[2]