gpt4 book ai didi

python - 斐波那契数,在 Python 3 中使用单线?

转载 作者:IT老高 更新时间:2023-10-28 21:32:10 25 4
gpt4 key购买 nike

我知道用正确的函数结构编写没有错,但我想知道如何用最 Pythonic 的方式用一条线找到第 n 个斐波那契数。

我写了那段代码,但在我看来这不是最好的方法:

>>> fib = lambda n:reduce(lambda x, y: (x[0]+x[1], x[0]), [(1,1)]*(n-2))[0]
>>> fib(8)
13

如何更好更简单?

最佳答案

fib = lambda n:reduce(lambda x,n:[x[1],x[0]+x[1]], range(n),[0,1])[0]

(这维护了一个从[a,b]到[b,a+b]的元组,初始化为[0,1],迭代N次,然后取第一个元组元素)

>>> fib(1000)
43466557686937456435688527675040625802564660517371780402481729089536555417949051
89040387984007925516929592259308032263477520968962323987332247116164299644090653
3187938298969649928516003704476137795166849228875L

(请注意,在此编号中,fib(0) = 0、fib(1) = 1、fib(2) = 1、fib(3) = 2 等)

(另请注意:reduce 在 Python 2.7 中是内置的,但在 Python 3 中没有;您需要在 Python 3 中执行 from functools import reduce。)

关于python - 斐波那契数,在 Python 3 中使用单线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com