python 生成具有特定条件的无限列表

python generate a infinite list with certain condition

我知道 python 中有发电机产量,例如:

def f(n): 
    x = n
    while True:
        yield x
        x = x+1

所以我尝试在不使用迭代的情况下将此 haskell 函数转换为 python:Haskell infinite recursion in list comprehension

我不确定如何在 python 中定义基本情况,也不确定如何将 if 语句与此 yield 人员结合使用!这是我尝试做的事情:

def orbit(x,y):
    while True:
        yield p (u,v)
        p (u,v) = (u^2 - v^2 + x, 2 * u * v + y)

我看不出你从哪里得到 p。据我所知,你几乎可以从字面上翻译它 Haskell:

def orbit(x, y):
    u, v = 0, 0
    while True:
        u, v = u**2 − v**2 + x, 2*u*v + y
        yield u, v

在他们的例子中,调用函数为orbit(1, 2)u将在第一轮绑定到1v绑定到2,然后产生 ((1, 2)) 。在下一次迭代中,u = 1**2 - 2**2 + 1 = 1 - 4 + 1 = -2v = 2*1*2 + 2 = 6.