【问题标题】:python generate a infinite list with certain conditionpython生成具有特定条件的无限列表
【发布时间】:2017-02-11 22:38:37
【问题描述】:

我知道python中有生成器yield,例如:

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

所以我尝试在不使用 iterate 的情况下将此 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)

【问题讨论】:

    标签: python list python-3.x yield


    【解决方案1】:

    我看不出你从哪里得到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

    【讨论】:

    • 这太相似了!几乎完全相同,我想我认为这是一种困难的方式。顺便说一句,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 2019-12-09
    • 2022-01-21
    相关资源
    最近更新 更多