我想以这种方式从种子构建一个列表:
seed, seed*weight - seed*weight**2
,依此类推,前一个号码是下一个号码的种子。
因此seed
的{{1}}和.5
的{{1}}我们会得到
weight
依此类推
这是我认为可行的:
3
输入列表是否会创建.5, -4, 24.0
列表的问题,而不是使用我想要的数字向前填充列表?
答案 0 :(得分:1)
您的accumulate
来电并未使用您已声明的weight
变量。相反,它使用inputs
中的第一个值作为第一个seed
(这是预期的),并将所有其他值作为权重(不是预期的)。
您可以使用其他inputs
列表:
inputs = [seed] + [weight]*10
results = list(accumulate(inputs, relationships))
但我不确定accumulate
是否是解决此问题的最佳方法。我认为以另一种方式解决问题更为自然,例如使用无限生成器函数:
def gen(seed, weight):
while True:
seed = seed * weight - seed * weight**2
yield seed
由于该系列是一个简单的几何级数(每一步乘以weight - weight**2
),您还可以编写一个函数来计算闭合形式的每个值:
def calc(seed, weight, n):
factor = weight - weight**2
return seed * factor**(n+1)