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

时间:2016-10-03 21:39:38

标签: python list python-3.x yield

我知道python中有生成器产量,如:

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

所以我尝试将这个haskell函数转换为python而不使用iterate:Haskell infinite recursion in list comprehension

我不确定如何在python中定义基本情况,也不确定如何将if语句与这个收益人员结合起来!这是我尝试做的事情:

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

1 个答案:

答案 0 :(得分:3)

我不知道你从哪里获得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将在第一轮中绑定到1v2,然后((1, 2))屈服了。在下一次迭代中,u = 1**2 - 2**2 + 1 = 1 - 4 + 1 = -2v = 2*1*2 + 2 = 6