将 lambda 转换为普通 def 函数

问题描述 投票:0回答:2

我是一名初级程序员,目前正在观看 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

如果有人能向我解释那就太好了,无论如何,谢谢

python function lambda
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]
© www.soinside.com 2019 - 2024. All rights reserved.