Py学习  »  Python

Fibonacci数列第n项的第7种计算方法:Python列表

Python小屋 • 6 年前 • 282 次点击  

前面已经分享了几种计算Fibonacci数列第n项的方法,详见Python快速计算Fibonacci数列中第n项的方法三种Fibonacci数列第n项计算方法及其优劣分析,本文分享第7种(过几天分享第8种),主要演示列表的append()和pop()这两个方法和反向索引的用法。如果n小的话,可以只append()不pop()(注意,这样的话append()的参数要改为data[-1]+data[-2]),但是如果n很大的话会导致内存崩溃。

下面的代码使用第800万项对本文的第7种方法和前面6种中最快的方法3进行了测试和对比,事实证明,算法3是无敌的,也是最简单的。

大家不妨分析一下,本文的方法7比方法3慢的原因是什么?

from time import time


def fibo3(n):
    a, b = 1, 1
    for i in range(2, n+1):
        a, b = b, a+b
    return a


def fibo7(n):
    data = [1, 1]
    for _ in range(2, n):
        data.append(sum(data))
        data.pop(0)
    return data[-1]


n = 8000000

for fibo in (fibo3, fibo7):
    start = time()
    r = str(fibo(n))
    print(fibo.__name__,
          len(r),
          sep=':',
          end=':')

    print(time()-start)


运行结果:

fibo3:1671901:619.382312297821
fibo7:1671901:1148.716125011444


----------相关阅读----------

三种Fibonacci数列第n项计算方法及其优劣分析

Python快速计算Fibonacci数列中第n项的方法

当Python列表遇上复合赋值运算符+=

Python把嵌套的字符串列表转换为整数列表的两种方法

小议Python列表和元组中的元素地址连续性

Python把列表中的数字尽量等分成n份

Python元组与列表的相同点与区别

详解Python列表推导式

对Python列表进行封装和二次开发实现自定义栈结构

列表元素循环移位中Python切片的妙用

Python列表与数字的四则运算

封装Python列表实现多下标访问

Python_今天是今年第几天

使用Python列表实现向量运算

Python列表模拟页面调度LRU算法(京东2016笔试题)

Python组合列表中多个整数得到最小整数(一个算法的巧妙实现)

Python编写人机对战小游戏(抓小狐狸)

详解Python使用模拟退火算法求解列表“最大值”


祝所有程序员1024节日快乐

学会提问,你就成功了一大半!

盘点那些让人上火的提问方式(论如何让交流更高效)



----------喜大普奔----------

1、继《Python程序设计基础》(2017年9月第5次印刷)、《Python程序设计(第2版)》(2017年9月第4次印刷)、《Python可以这样学》(2017年7月第3次印刷)系列图书之后,董付国老师新书《Python程序设计开发宝典》(2017年10月第2次印刷)。为庆祝新书《Python程序设计开发宝典》全面上架,清华大学出版社联合“赣江图书专营”淘宝店推出特价优惠活动,《Python程序设计开发宝典》原价69元,新书上架期间超低价39.8元,可以复制下面的链接使用浏览器打开查看图书详情和购买:

https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-14464369246.84.46f16db0roWfX4&id=557107249812&rn=339cbc9df2bac424664103917dedfbd2&abbucket=8&tbpm=3


2、董付国老师新作《中学生可以这样学Python》已于2017年10月正式出版,很快会在各大书城全面上架。


3、董付国老师6本Python系列图书阅读指南


4、董老师免费视频地址: http://pan.baidu.com/s/1c14WYn2 密码: 9xwr


5、董老师收费视频课:

CSDN学院(2017年11月6日-17日,8折):http://edu.csdn.net/search?keywords=%E8%91%A3%E4%BB%98%E5%9B%BD&type=0


龙果学院:http://www.roncoo.com/course/list.html?courseName=Python%E5%8F%AF%E4%BB%A5%E8%BF%99%E6%A0%B7%E5%AD%A6



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/FseVTChTN6
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/4035
 
282 次点击