python - 从发电机生成

标签 python generator

我有一个生成器,它接受一个数字作为参数并生成其他数字。 我想使用此生成器生成的数字并将它们作为参数传递给同一个生成器,从而创建一定长度的链。

例如,mygenerator(2) 生成 5、4 和 6。将 mygenerator 应用于这些数字中的每一个,一遍又一遍地应用于生成的数字。生成器总是产生比作为参数传递的数字更大的数字,并且对于 2 个不同的数字永远不会产生相同的数字。

我的生成器(2):4 5 我的发电机(4):10 11 12 我的生成器(5):9 300 500

因此,集合 (9,10,11,12,300,500) 与原始数字 2 的“距离”为 2。如果我将其应用于数字 9,我将得到一组与原始数字 2 距离为“3”的数字。原2.

本质上,我想要的是创建一个与给定数字具有指定距离的集合,但我在弄清楚如何在 Python 中做到这一点时遇到了问题。非常感谢帮助:)

最佳答案

假设我们的生成器生成给定数字的平方和立方,这样它将输出唯一的 因此,如果我们想在最简单的情况下获取 dist D 处的数字,我们可以递归地获取 dist D-1 处的数字,然后将生成器应用于它们

def mygen(N):
    yield N**2
    yield N**3

def getSet(N, dist):
    if dist == 0:
        return [N]

    numbers = []
    for n in getSet(N, dist-1):
        numbers += list(mygen(n))

    return numbers

print getSet(2,0)
print getSet(2,1)
print getSet(2,2)
print getSet(2,3)

输出为

[2]
[4, 8]
[16, 64, 64, 512]
[256, 4096, 4096, 262144, 4096, 262144, 262144, 134217728]

关于python - 从发电机生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1016997/

相关文章:

c# - 迭代器和枚举器的区别

python - 将函数变成生成器

java - 用于 Java 的 Finagle Thrift 生成器

python - 产量有一个罕见的行为

python - 正确使用生成器输入

python - 如何向 matplotlib 添加垂直线?

python - 带有嵌套列表的列表理解中的条件语句(Python 3) :

python - 以编程方式使用 YARN master 进行 Spark 提交不起作用

python - 如何从 python 运行可执行文件并向它传递请求的参数?

python - 在 Windows 上安装 GeoIP?