检查Python Fibonacci序列生成器的效率?

时间:2012-06-02 08:45:34

标签: python

我是python的新手并且一起编程。我想知道这是否是为初学者生成斐波那契数字的非常低效的方法?

a = 1
b = 1
total = 0
counter = input("Please enter the term you wish to end at: ")
print "1"
print""
print "1"
number = 2

while counter > number:
    total = a+b
    print ""
    print total
    a = b
    b = total
    number = number + 1

如果是这样,有人可以指出一些事情,例如:

研究什么/谷歌使我的代码更有效率。

建议我需要处理的编程实践(我知道这不是我工作的一个很好的例子)。

1 个答案:

答案 0 :(得分:5)

使用python,你不要像在C中那样担心效率,尽管你仍然想要达到最短的Big Oh运行时间。你写这篇文章的方式和你能得到的效率一样,所以你不必太担心。但是,使用while添加到计数器时,它不是非常pythonic。

这可以更简单地写成:

a, b = 0, 1
counter = input("Please enter the term you wish to end at: ")
for _ in xrange(counter): #xrange is more efficient than range, the number is not used so _ is used to show that
    a, b = b, a+b
    print a
    print

您也可以使用生成器,这可能是您可以使用的编程习惯......

def fib(end):
    a, b = 0, 1
    for _ in xrange(end):
        a, b = b, a+b
        yield str(a)

counter = input("Please enter the term you wish to end at: ")    
print '\n\n'.join(fib(counter))