是否可以编写一个包含 while 循环及其语句的生成器表达式?如果有的话,模板怎么样? 例如考虑斐波那契数列的生成器:
def fibogen(m):
n1 = 0
n2 = 1
while n1<=m:
yield n1
n1,n2 = n2, n2 + n1
fibseq = fibogen(30)
是否可以将其写为生成器表达式?如果答案是肯定的,那么如何写呢?我尝试过,但做不到:
fiboseq = (n1 while n1<=m n1,n2 = n2, n2 + n1)
你可以用一些技巧来做到这一点:
fibonacci = lambda m: (x1 := 0) or (x2 := 1) and ((next_x := x1 + x2) and (x1 := x2) + (x2 := next_x) for _ in range(m))
for num in fibonacci(30):
print(num)
但是你为什么要这么做呢?它看起来非常丑陋:)
我确信你不允许在列表理解中使用
while
,所以我想泛型表达式也是如此