TL;DR:我们能在lambda
中实现yield
或生成器语句(带循环)吗?
我的问题是澄清:
下面的简单循环函数是否可以实现
def loopyield():
for x in range(0,15):
yield x
print(*loopyield())
错误结果:
lamyield=lambda x: yield x for x in range(0,15)
^
SyntaxError: invalid syntax
这看起来像是,它期望某个东西作为未写入的返回语句的正确操作数,但找到了yield
,并感到困惑.
有没有一种合法的方法可以在循环中实现这一点?
旁注:yield
可以是陈述/表达,具体取决于你问的人:yield - statement or expression?
Final Answer :yields 可用于lambda,但限制(单线)使其无用.for/while
在lambda中不可能,因为它们不是表达式.-user2357112隐式for循环在列表理解中是可能的,而yield在列表理解中是有效的-wim
Verdict-个显式循环不可能,因为python中的lambda只能包含表达式,要编写显式循环,需要使用语句.-wim