循环可以在lambda中完成吗?

2024-04-16 04:42:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在lambda函数中循环,我的代码是:

zxm=lambda k:[k+x for x in range(k)]
print(zxm(5))

我得到的结果是当我给出输入时:

[5,6,7,8,9]

然而,我的预期输出是所有5个数字的总和,我想要:

35

我们如何在lambda中循环?另外,是否有一个递归的机会?你知道吗


Tags: lambda函数代码inforrange数字机会
2条回答

这不是一个循环本身,它是一个列表。例如,您可以使用sum来获取总和。你知道吗

In [7]: zxm = lambda k: sum(k+x for x in range(k))

In [8]: zxm(5)
Out[8]: 35

注意像for这样的语句在lambda中是禁止的;只允许表达式,所以虽然可以使用列表理解,但不能编写传统的for循环。你知道吗

首先,python中有sum方法。你可以做sum(zxm(5))。递归lambda确实存在(请参见:Y Combinator),这在python中是可能的(请参见Can a lambda function call itself recursively in Python?),但是,这种方法的实用性不是特别强。lambda可以像您在这里所做的那样在中循环(在列表上)。问题不在于zxm是lambda,而在于它的定义方式。通过将其定义为zxm=lambda k: sum([k+x for x in range(k)]),可以获得zxm中的和。你知道吗

相关问题 更多 >