查找斐波那契数列的 Python 程序。更Pythonic的方式

标签 python

还有另一个线程讨论 Python 中的斐波纳奇系列。这是为了将代码调整为更 pythonic。 How to write the Fibonacci Sequence in Python

我爱上了我为解决 Project Euler Q2 而编写的这个程序。我刚开始使用 Python 进行编码,每次我都以 Pythonic 方式进行编码时感到很高兴!你能建议一个更好的 Pythonic 方法来做到这一点吗?

Project Euler Q2 .找出斐波那契数列中不超过四百万的所有偶数项的总和。

fib=[]
def fibo(a=-1,b=1,upto=4000000):
    if a+b>=upto:
        return
    else:
        a,b=b,a+b
        fib.append(b)
        fibo(a,b)

fibo()
even=[i for i in fib if not i%2]
print sum(even)

最佳答案

使用生成器是一种生成长序列同时保留内存的 Pythonic 方式:

def fibonacci():
  a, b = 0, 1
  while True:
    yield a
    a, b = b, a + b

import itertools
upto_4000000 = itertools.takewhile(lambda x: x <= 4000000, fibonacci())
print(sum(x for x in upto_4000000 if x % 2 == 0))

关于查找斐波那契数列的 Python 程序。更Pythonic的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578379/

相关文章:

python - 来自数组的 Pandas Multiindex => TypeError : unhashable type: 'dict'

python - 为什么我得到 "NoneType' 对象没有属性...?

python - 如何在函数内部(以非阻塞方式)使用 zmq 在客户端请求时获取函数的状态?

python - 从两个列表构建字典

python - 如何在 Robot Framework 中将变量定义为具有列表值的字典

python - 平方根算法错误

python - 调试 CGI python

python - Groupby pandas 但对多列执行计算

python - 在 KeyboardInterrupt 上杀死一系列子进程

python - 使用 item_count 时 Boto 的 DynamoDB API 返回错误值