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

标签 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语句与这个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 将绑定(bind)到 1v在第一轮中将 变为 2,则生成 ((1, 2))。在下一次迭代中,u = 1**2 - 2**2 + 1 = 1 - 4 + 1 = -2v = 2*1*2 + 2 = 6.

关于python 生成具有特定条件的无限列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840845/

相关文章:

list - protobuf 网络 : list with null elements

python-3.x - 元组的连接

python - 使用 BeautifulSoup 提取 CData

python - Pandas - 获取当前行,将值与前 X 行进行比较并返回匹配项数(在 x% 范围内)

python - scipy.optimize + kmeans 聚类

python - 同时引发两个错误

python-3.x - python 3.4 计算 .txt 文件中的出现次数

python - 从网页中提取所有图像的脚本

java - 在 arrayList 中查找特定对象

python - 显示 "if any"检测到的列表元素