当前位置: 首页 > news >正文

python斐波那契数列_Python 迭代器案例:生成斐波那契数列

斐波那契数列

0,1,1,2,3,5,8,13,21,34 ….

前两个数相加,是第三个数的值

假如我需要一亿甚至十亿个数,如果使用range()生成,使用一个list() 储存。我们使用迭代器设置好生成的方法,什么使用我们什么时候生成,这样可以节约内存

斐波那契数列案例

需要一个列表存储生成的数字

maxCount = 100000 # 需要生成的个数

count = 0 # 记录生成的次数

startOne = 0 # 斐波那契数列第一个起始值

startTwo = 1 # 斐波那契数列第二个起始值

fibonacciList = list()

while count < maxCount:

fibonacciList.append(startOne)

startOne, startTwo = startTwo, startOne + startTwo

count += 1

for num in fibonacciList:

print(num)

加入迭代器

这个过程没有一个列表

class Fibonacci(object):

def __init__(self, allNum):

self.allNum = allNum # 需要生成的个数

self.count = 0 # 记录生成的次数

self.startOne = 0 # 斐波那契数列第一个起始值

self.startTwo = 1 # 斐波那契数列第二个起始值

def __iter__(self):

return self

def __next__(self):

if self.count < self.allNum:

# 记录斐波那契数

fiboNum = self.startOne

# 计算斐波那契数

self.startOne , self.startTwo = self.startTwo , self.startOne + self.startTwo

# 生成次数

self.count += 1

return fiboNum

else:

# 自定义一个异常 停止循环

raise StopIteration

# 传入生成个数

fibo = Fibonacci(10000)

# 一个对象 可以使用 for 循环

for num in fibo:

print(num)

相关文章:

  • 安卓安装python第三方库_python安装第三方库的方法(一般方式、easy
  • 后端中文收到的都是问号_学完这些后端技术栈,我秃了,也变强了!
  • bootstraptable获取所有数据_一文搞定Redis五大数据类型及应用场景
  • 华硕门店点亮系统_华硕ROG机电散热专访:一体化整合乃最大优势
  • exe打包工具_QT系列之如何打包可执行程序,让QT程序进入任意一台电脑
  • conda jupyter pytorch_PyTorch进阶之路(一):张量与梯度
  • pytorch dataset读取数据流程_动手学习深度学习Pytorch——线性回归
  • python如何将列表去掉引号_如何将你的 Python 项目全面自动化?
  • 用python进行自然语言处理_用python进行图片整理
  • dbf文件怎么创建_spring boot 配置文件properties和YAML详解
  • python中类与对象之间的关系_面向对象进阶之类和类之间的关系
  • 网关是什么意思_网关的理解
  • matlab toolbox下载_Mac上Matlab常见问题
  • python redis 操作_Python redis set集合操作
  • fileinputstream读取文件_20M 文件用 Java 压缩从30秒到1秒的优化过程
  • [deviceone开发]-do_Webview的基本示例
  • 【comparator, comparable】小总结
  • Android系统模拟器绘制实现概述
  • Android组件 - 收藏集 - 掘金
  • extjs4学习之配置
  • IDEA 插件开发入门教程
  • Java-详解HashMap
  • jQuery(一)
  • Python学习之路13-记分
  • select2 取值 遍历 设置默认值
  • SpringCloud集成分布式事务LCN (一)
  • vue-router 实现分析
  • 分享几个不错的工具
  • 两列自适应布局方案整理
  • 判断客户端类型,Android,iOS,PC
  • 微信小程序开发问题汇总
  • 学习笔记TF060:图像语音结合,看图说话
  • 移动端 h5开发相关内容总结(三)
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (备忘)Java Map 遍历
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (一)基于IDEA的JAVA基础10
  • (转)fock函数详解
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .htaccess配置常用技巧
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net framework4与其client profile版本的区别
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .Net下的签名与混淆
  • .Net中wcf服务生成及调用
  • /*在DataTable中更新、删除数据*/
  • @SentinelResource详解
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [ 第一章] JavaScript 简史