将lambda转换为普通的def函数

-1 投票
2 回答
35 浏览
提问于 2025-04-14 17:54

我是一名初学编程的学生,目前正在观看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]

撰写回答