python_14_生成器
什么是生成器?
-- 动态的生成有规律的列表和元组,查询多少才会生成多少数据,不需要时数据不存在
- 大到10几万数据,就省空间了
什么是列表生成式?
-- [ handle_i_result for i in range(start,end,step)] - 列表成式
-- handle_i_result 是对 i (迭代对象)进行处理 (i*2 i*3 ......)
-- [i*2 for i in range(10)] 生成 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
什么是生成器?
builder_1 = (handle_i_result for i in range(start,end,step)) # 定义一个生成器
builder_1 = (i*2 for i in range(0,10)) builder_1.__next__() # 生成第1元素 builder_1.__next__() # 生成第2个元素
-- 坑:只记住当前位置,只有__next__() 去取值,只能取下一个值 -- py2中为next()方法
还有其他的生成器?
-- 函数也可以做生成器
- 斐波那契数列 除了第 1 和第 2 个数,其他数都是前两个数相加和
[1,1,2,3,5,8,13 , ......]
#!/usr/bin/python3
def fib(max_1):
n, a, b = 0, 0, 1
while n < max_1:
yield b
a, b = b, a+b
n += 1
if __name__ == '__main__':
get_number = 30 # 想获得多少个斐波拉契数
try:
fib_1 = fib(20)
for i in range(get_number):
print(fib_1.__next__())
except:
print("取的位数大于生成的个数,嘻嘻")
# 通过yield 执行从函数中跳出来了,再通过__next__方法重新回到函数,yield把函数变成器,
# 定义了20个长度斐波那契数列,如果__next__取的值多了,就会出现异常
python_14_生成器的更多相关文章
- 介绍一款原创的四则运算算式生成器:CalculateIt2
家里小朋友读一年级了,最近每天都有一些10以内的加减法口算练习,作为程序员爸爸,自然也是想办法能够偷懒,让电脑出题,给小朋友做些练习.于是,自己在业余时间开发了一个四则运算算式生成器,名为:Calcu ...
- 每天一个设计模式-7 生成器模式(Builder)
每天一个设计模式-7 生成器模式(Builder) 一.实际问题 在讨论工厂方法模式的时候,提到了一个导出数据的应用框架,但是并没有涉及到导出数据的具体实现,这次通过生成器模式来简单实现导出成文本,X ...
- Objective-C 生成器模式 -- 简单实用和说明
1.生成器模式的定义 将一个复杂的对象的构件与它的表示分离,使得同样的构建过程可以创建不同的表示 2.生成器模式的UML Builder :生成器接口,定义创建一个Product各个部件的操作 Con ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(25)-权限管理系统-系统管理员(附生成器)
系列目录 这一节我们要着手建立系统管理员表,但发布之前,我先发布一个代码生成器给大家先用着. 这个生成器是为这个项目而生的,理论不能用于其他项目,而且写得比较潦草,但能用 下载地址 有兴趣要生成器源码 ...
- Python(四)装饰器、迭代器&生成器、re正则表达式、字符串格式化
本章内容: 装饰器 迭代器 & 生成器 re 正则表达式 字符串格式化 装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解 ...
- ES6笔记(5)-- Generator生成器函数
系列文章 -- ES6笔记系列 接触过Ajax请求的会遇到过异步调用的问题,为了保证调用顺序的正确性,一般我们会在回调函数中调用,也有用到一些新的解决方案如Promise相关的技术. 在异步编程中,还 ...
- C#/ASP.NET完善的DBHelper,配套Model生成器
支持Oracle.MSSQL.MySQL.SQLite四种数据库,支持事务,支持对象关系映射:已在多个项目中实际使用. 没有语法糖,学习成本几乎为0,拿来即用. DBHelper类完整代码: usin ...
- Python 生成器与迭代器 yield 案例分析
前几天刚开始看 Python ,后因为项目突然到来,导致Python的学习搁置了几天.然后今天看回Python 发现 Yield 这个忽然想不起是干嘛用的了(所以,好记性不如烂笔头.).然后只能 花点 ...
- Mockjs,模拟数据生成器
(推荐使用)Mock.js是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试. 提供了以下模拟功能: 1. 根据数据模板生成模拟数据. 2. 模拟Ajax请求,生成并返回模拟 ...
随机推荐
- Qt用Zip压缩文件夹的一些坑
环境: QT3.3.8 vs2005 QDir dir("/home/Blinux/html"); if ( !dir.exists() ) { //目录不存在 } QString ...
- Java学习笔记10(面向对象三:接口)
接口: 暂时可以理解为是一种特殊的抽象类 接口是功能的集合,可以看作是一种数据类型,是比抽象类更抽象的"类" 接口只描述所应该具备的方法,并没有具体实现,具体实现由接口的实现类(相 ...
- Linux 常见命令示例【一】
查看端口占用 [查看目前系统上已在监听的网络联机及其pid netstat –tlnp] 文件挂载 Linux与windows文件传输(三方软件:secureCRT, WINscp) 1)sftp S ...
- Windows程序设计学习笔记(四)自绘控件与贴图的实现
Windows系统提供大量的控件供我们使用,但是系统提供的控件样式都是统一的,不管什么东西看久了自然会厌烦,为了使界面更加美观,添加一些新的东西我们需要自己绘制控件. 控件在默认情况下并不进行自绘,如 ...
- tornado SSL 证书获取与服务器配置
转载注明出处: http://www.cnblogs.com/ityoung/p/8296088.html 自动化测试/持续集成/测试开发 QQ交流群: 70160503 服务端生成证书 进入 ope ...
- 单张滑动tab 组件
/* CSS重置 * */ body, ul, ol { margin: 0px; padding: 0px; } .flash { width: 300px; height: 420px; posi ...
- 购物车css样式效果
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Zabbix实战-简易教程--动作(Actions)--自动注册
一.概述 之前已经讲述了自动发现功能,自动注册和自动发现非常类似,但是比自动发现更精确.因为自动注册,是在Agent上自定义元数据,然后Agent将元数据发送给server进行匹配,如果匹配一致,则进 ...
- Jquery_基础(三) ajax与json
什么是ajax? AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. ...
- MySQL常用查询语句汇总(不定时更新)
在这篇文章中我会通过一些例子来介绍日常编程中常用的SQL语句 目录: ## 1.数据库的建立 ## 1.数据库的建立 实例将ER图的形式给出: 由此转换的4个关系模式: ...