Fibonacci数列第n项的第7种计算方法:Python列表
2017-11-06 00:00
295 查看
前面已经分享了几种计算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
下面的代码使用第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
相关文章推荐
- Fibonacci数列第N项的两种计算方法比较
- 计算Fibonacci数列第n项的第8种方法(数学推导与Python实现)
- 17. 微软面试题:用最快的方法计算出 Fibonacci数列中的第n项
- 三种Fibonacci数列第n项计算方法及其优劣分析
- Python快速计算Fibonacci数列中第n项的方法
- 数据结构——算法之(014)( 输入n,用最快的方法求Fibonacci数列的第n项)
- 【微软100题】输入n,用最快的方法求Fibonacci数列的第n项
- Fibonacci数列计算的三种方法
- 用动态分配空间的计算方法计算Fibonacci数列的前20项
- C++:编写一个程序,用动态分布分配空间的方法计算Fibonacci数列的前二十项并存储到动态分布的空间中
- UVA 10518 How Many Calls(求计算Fibonacci数列第n项时递归调用次数)
- 计算斐波那契数列第n项值的方法
- 数据结构之用递归和非递归方法计算斐波那契数列的第n项
- 定义Fibonacci数列如下: / 0 n=0 f(n)= 1 n=1 \ f(n-1)+f(n-2) n=2 输入n,用最快的方法求该数列的第n项。
- 19.Fibonacci数列,输入n,用最快的方法求该数列的第n项
- <仅是自己做笔记。。。系列-11>输入n,用最快的方法求Fibonacci数列的第n项。
- 19.定义Fibonacci数列,输入n,用最快的方法求该数列的第n项
- python两个关于计算方法运行时间的修饰器
- c++中常用的计算程序运行时间的方法
- 给Nsstring增加一个对象方法:计算某个字符串中的阿拉伯数字的个数