我有一个生成器,它接受一个数字作为参数并生成其他数字。
我想使用这个生成器生成的数字并将它们作为参数传递给同一个生成器,创建一个一定长度的链。
例如,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”的数字。
本质上我想要的是创建一个与给定数字具有指定距离的集合,但我在弄清楚如何在 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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)