初识python: 生成器
生成器定义理解,直接上代码:
#!/user/bin env python
# author:Simple-Sir
# time:20181005
# 生成器
'''
# 列表生成式
a=[i for i in range(10)]
print(a) def fun_add(a,b):
return a+b
b = [fun_add(i,j) for i in range(1,4) for j in range(4,7)]
print(b)
''' '''
生成器: 一边循环一边计算的机制,就叫生成器generator
循环一次,计算一次,不需要先循环完再计算。
生成器只有在调用时才会生成相应的数据,
只记录当前位置的值
只有一个__next__方法 :获取下一个位置的值
'''
'''
# 生成器方式一:列表生成式
a = (i*2 for i in range(10))
print(a.__next__())
''' '''
# 生成器方式二:函数做生成器
# 斐波拉契数列,除了第一个和第二个外,任意一个数都由前两数相加得到。
def fblq(max):
n,a,b=0,0,1
# n=0
# a=0
# b=1
while n<max:
# print(b)
yield b # 将函数变成生成器,想要返回的值加yield,yield是一个类似return 的关键字
a,b = b,a+b
# 相当于 ==>
# t = (b,a+b) -->(1,0+1)
# a=t[0] -->1
# b=t[1] -->0+1
# 而不是 a=b,b=a+b
n += 1
return '执行完成' #异常消息
f = fblq(10)
print('打印第一个位置值',f.__next__())
print('打印下一个位置值',f.__next__())
print('打印下一个位置值',f.__next__())
print('开始循环打印')
''' '''
# 循环打印
for i in f:
print(i)
''' '''
g = fblq(3)
while True:
try:
x=next(g)
print('g',x)
except StopIteration as e:
print('错误信息',e.value)
break
''' '''
def scq_f():
for i in range(5):
for j in range(5):
k=i+j
#print(k)
yield k #关键点,将函数变成生成器,即将函数保持中断状态
return '错误信息'
# f = scq_f()
# for i in f:
# print(i)
f=scq_f() while True:
try:
x=next(f) # 即:f.__next__()
print('f',x)
except StopIteration as e:
print('错误信息:',e.value) #获取scq_f的return值
break '''
初识python: 生成器的更多相关文章
- @1-2初识Python爬虫
初识Python爬虫 Python爬虫(入门+进阶) DC学院 环境搭建: Python2与Python3的差异:python2与python3整体差异不大,大多是一些语法上的区别,考虑到py ...
- Python导出Excel为Lua/Json/Xml实例教程(一):初识Python
Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...
- Python开发【第一篇】:初识Python
初识python 一.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...
- Python开发【第二篇】:初识Python
Python开发[第二篇]:初识Python Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏 ...
- python——生成器
python——生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个 ...
- 初识python面向对象
一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...
- 篇2 安卓app自动化测试-初识python调用appium
篇2 安卓app自动化测试-初识python调用appium --lamecho辣么丑 1.1概要 大家好!我是lamecho(辣么丑),上一篇也是<安卓app自动化测 ...
- 2017-06-22初识python
初识python #!/usr/bin/env python (python解释器的文件路径)# -*- coding:utf-8 -*- (使用的编码内型)# python 2.7 <需要加第 ...
- day01 初识Python
今日主要内容 1.初识python 2.简单了解下python的数据类型 nubmer=int(input("请输入数字大小:")) if nubmer>66: print( ...
- Python生成器-博文读后感
Windows 10家庭中文版,Python 3.6.4, 上午看过了一篇讲Python生成器的博文: 提高你的Python: 解释‘yield’和‘Generators(生成器)’(英文原文) 这篇 ...
随机推荐
- 【Linux】【Services】【Docker】Docker File
Docker Images: docker commit Dockerfile:文本文件,镜像文件构建脚本: Dockerfile:由一系列用于根据基础镜像构建新的镜像文件的专用指令序列组成: 指令: ...
- 配置yum代理
一.说明 很多内网环境无法使用yum 二.配置 1.安装nginx 2.配置 server { listen 808; #禁用multipart range功能 max_ranges 1; serve ...
- Java synchonized 同步
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchronized(this ...
- Java 中接口和抽象类的 7 大区别!
本文已收录<Java常见面试题>:https://gitee.com/mydb/interview Java 是一门面向对象的编程语言,面向对象的编程语言有四大特征:抽象.封装.继承和 ...
- 在mybatis的@Select中用not in 时
当在mybatis中用not in 时,需要用${LocalOrderNo}这样的形式来代替,而不能用#{LocalOrderNo}(把它当成一个整体的字符串了) "SELECT * FRO ...
- myeclipse 安装spket
myeclipse 安装spket为以下步骤 请注意:1.myPlugins为新建的文件夹 2.spket-1.6.23为新建的文件 如上步骤为安装spket,那么如下的步骤为让myeclipse里的 ...
- JAVA将Byte数组(byte[])转换成文件
/** * 将Byte数组转换成文件 * @param bytes byte数组 * @param filePath 文件路径 如 D://test/ 最后"/"结尾 * @par ...
- Centos 查询端口被占用命令
lsof -i:端口号 netstat -ntulp | grep 80 //查看所有80端口使用情况
- 【LeetCode】5686. 移动所有球到每个盒子所需的最小操作数 Minimum Number of Operations to Move All Balls to Each Box
作者: 负雪明烛 id: fuxuemingzhu 公众号:负雪明烛 本文关键词:LeetCode,力扣,算法,算法题,交替合并字符串,Merge Strings Alternately,刷题群 目录 ...
- 【LeetCode】1185. Day of the Week 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 计算与1971-1-1之间天数 日期 题目地址:htt ...