使用列表推导式的斐波那契数列

我想写一个列表推导式,它会给出Fibonacci直到 400 万的数字。我想将其添加到列表理解和求和均匀间隔的术语中。


from math import sqrt

Phi = (1 + sqrt(5)) / 2

phi = (1 - sqrt(5)) / 2

series = [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, 1

total = 0

while a <= 4000000:

    if a % 2 == 0:

        total += a

    a, b = b, a+b 

print(total)


呼如林
浏览 350回答 2
2回答

梵蒂冈之花

列表推导本质上是一个并行过程;这是一个输入可迭代对象的过程,将某个函数应用于每个元素,并创建一个输出列表。应用此功能时,它会独立于其他元素应用于每个元素。因此,列表推导式不适合迭代算法,例如您提出的算法。它可以用在你的封闭式公式中:sum([int((Phi**n - phi**n) / sqrt(5)) for n in range(1, 10) if int((Phi**n - phi**n) / sqrt(5))%2 == 0])如果要使用迭代算法,生成器更合适。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python