我知道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)
答案 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
将在第一轮中绑定到1
和v
到2
,然后((1, 2)
)屈服了。在下一次迭代中,u = 1**2 - 2**2 + 1 = 1 - 4 + 1 = -2
和v = 2*1*2 + 2 = 6
。