Python生成器以及应用实例解析


Posted in Python onFebruary 08, 2018

本文研究的主要是Python生成器及其应用,具体如下。

一、定义

可以理解为一种数据类型,这种数据类型自动实现了迭代器协议(其他的数据类型需要调用自己内置的__iter__方法),所以生成器就是可迭代对象

二、生成器的两种形式(Python有两种不同的方式提供生成器)

1.生成器函数:常规函数定义,但是,使用yield语句而不是return语句返回结果。yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次重它离开的地方继续执行

yield的功能:

  1. 把函数的结果做生迭代器(以一种优雅的方式封装好__iter__,__next__)
  2. 函数暂停与再继续运行的状态是由yield
def func():
  print('first')
  yield 11111111
  print('second')
  yield 2222222
  print('third')
  yield 33333333
  print('fourth')


g=func()
print(g)
from collections import Iterator
print(isinstance(g,Iterator)) #判断是否为迭代器对象

print(next(g))
print('======>')
print(next(g))
print('======>')
print(next(g))
print('======>')
print(next(g))

for i in g: #i=iter(g)
  print(i)

注:yield与return的比较?

  • 相同:都有返回值的功能
  • 不同:return只能返回一次值,而yield可以返回多次值

2.生成器表达式:类似于列表推导,但是,生成器返回按需产生结果的一个对象,而不是一次构建一个结果列表

g=('egg%s' %i for i in range(1000))
print(g)
print(next(g))
print(next(g))
print(next(g))

with open('a.txt',encoding='utf-8') as f:
  # res=max((len(line) for line in f))
  res=max(len(line) for line in f)
  print(res)

print(max([1,2,3,4,5,6]))

with open('a.txt',encoding='utf-8') as f:
  g=(len(line) for line in f)
  print(max(g))
  print(max(g))
  print(max(g))

三、应用

# [{'name': 'apple', 'price': 333, 'count': 3}, ]文件内容
#通过生成器表达器完成对文件的读完跟操作
with open('db.txt',encoding='utf-8') as f:
  info=[{'name':line.split()[0],
   'price':float(line.split()[1]),
   'count':int(line.split()[2])} for line in f if float(line.split()[1]) >= 30000]
  print(info)

总结

以上就是本文关于Python生成器以及应用实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python验证码识别处理实例
Dec 28 Python
浅析Python中的for 循环
Jun 09 Python
python 定时修改数据库的示例代码
Apr 08 Python
Python实现购物车购物小程序
Apr 18 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
Python3 实现串口两进程同时读写
Jun 12 Python
Python 实现输入任意多个数,并计算其平均值的例子
Jul 16 Python
Numpy的简单用法小结
Aug 28 Python
Python collections模块使用方法详解
Aug 28 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 Python
python打开文件的方式有哪些
Jun 29 Python
安装pyinstaller遇到的各种问题(小结)
Nov 20 Python
代码分析Python地图坐标转换
Feb 08 #Python
python爬虫中get和post方法介绍以及cookie作用
Feb 08 #Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 #Python
python OpenCV学习笔记之绘制直方图的方法
Feb 08 #Python
Python列表推导式与生成器表达式用法示例
Feb 08 #Python
详解python OpenCV学习笔记之直方图均衡化
Feb 08 #Python
python OpenCV学习笔记实现二维直方图
Feb 08 #Python
You might like
YB217、YB235、YB400浅听
2021/03/02 无线电
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
php5与php7的区别点总结
2019/10/11 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
Jquery 表单验证类介绍与实例
2013/06/09 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
javascript搜索框效果实现方法
2015/05/14 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
Python中的XML库4Suite Server的介绍
2015/04/14 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
pytorch 数据集图片显示方法
2018/07/26 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
python之array赋值技巧分享
2019/11/28 Python
python创建子类的方法分析
2019/11/28 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
python实现图像拼接功能
2020/03/23 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
python RSA加密的示例
2020/12/09 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
IE滤镜与CSS3效果(详细整理分享)
2013/01/25 HTML / CSS
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
小学生运动会报道稿
2014/09/12 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书