我想写一个列表推导式,它会给出Fibonacci直到 400 万的数字。我想将其添加到列表理解和求和均匀间隔的术语中。from math import sqrtPhi = (1 + sqrt(5)) / 2phi = (1 - sqrt(5)) / 2series = [int((Phi**n - phi**n) / sqrt(5)) for n in range(1, 10)]print(series)[1, 1, 2, 3, 5, 8, 13, 21, 34]这是一个有效的示例代码,我想使用列表理解编写类似的代码。请帮忙。a, b = 1, 1total = 0while a <= 4000000: if a % 2 == 0: total += a a, b = b, a+b print(total)
2 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
列表推导本质上是一个并行过程;这是一个输入可迭代对象的过程,将某个函数应用于每个元素,并创建一个输出列表。应用此功能时,它会独立于其他元素应用于每个元素。因此,列表推导式不适合迭代算法,例如您提出的算法。它可以用在你的封闭式公式中:
sum([int((Phi**n - phi**n) / sqrt(5)) for n in range(1, 10) if int((Phi**n - phi**n) / sqrt(5))%2 == 0])
如果要使用迭代算法,生成器更合适。
添加回答
举报
0/150
提交
取消