Python迭代器与生成器基本用法分析


Posted in Python onJuly 26, 2018

本文实例讲述了Python迭代器与生成器基本用法。分享给大家供大家参考,具体如下:

迭代器

可以进行for循环的数据类型包括以下两种:

1. 集合数据类型比如listtupledictstr

2. 另一种是生成器

而他们都是可迭代对象,称为Iterable

Isinstandce()可以用来判断对象是否为可迭代对象

>>> from collections import Iterable
>>> isinstance([], Iterable)
True
>>> isinstance({}, Iterable)
True
>>> isinstance('abc', Iterable)
True
>>> isinstance((x for x in range(10)), Iterable)
True
>>> isinstance(100, Iterable)
False

然后,只有生成器可以称为迭代器,因为他们是不断使用next()函数返回值的,属于惰性计算,而对于迭代器也有一个判断函数

>>> from collections import Iterator
>>> isinstance((x for x in range(10)), Iterator)
True
>>> isinstance([], Iterator)
False
>>> isinstance({}, Iterator)
False
>>> isinstance('abc', Iterator)
False

生成器

生成器:就是未循环完的列表,这是为了节约电脑内存,设立的一种一边循环一边计算的机制。

创建的方法也是很简单,其中一种就是把列表生成式的[]改成()就可以了

而调用的时候也一般不用麻烦的next()的方法,而是用for循环来遍历

比如:

g= (x*x for x in range(10))
for n in g:
 print(n)

这样就能遍历出所有的生成器中的元素

另一种生成器的方法:如果函数中包含有yield关键字,则这是一个生成器

def odd():
  print('step 1')
  yield 1
  print('step 2')
  yield(3)
  print('step 3')
  yield(5)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
12步教你理解Python装饰器
Feb 25 Python
Python科学计算之NumPy入门教程
Jan 15 Python
老生常谈进程线程协程那些事儿
Jul 24 Python
python如何为创建大量实例节省内存
Mar 20 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
python正则-re的用法详解
Jul 28 Python
PyQt5通信机制 信号与槽详解
Aug 07 Python
PyCharm搭建Spark开发环境的实现步骤
Sep 05 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
Oct 24 Python
如何利用Python动态模拟太阳系运转
Sep 04 Python
Python装饰器详细介绍
Mar 25 Python
Python实现矩阵相乘的三种方法小结
Jul 26 #Python
python实现泊松图像融合
Jul 26 #Python
python中的decorator的作用详解
Jul 26 #Python
python opencv实现旋转矩形框裁减功能
Jul 25 #Python
Python3匿名函数用法示例
Jul 25 #Python
Python实现动态添加属性和方法操作示例
Jul 25 #Python
利用pandas读取中文数据集的方法
Jul 25 #Python
You might like
一个更简单的无限级分类菜单代码
2007/01/16 PHP
Zend的AutoLoad机制介绍
2012/09/27 PHP
解析wamp5下虚拟机配置文档
2013/06/27 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
node.js中http模块和url模块的简单介绍
2017/10/06 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
python计算最小优先级队列代码分享
2013/12/18 Python
Python编写屏幕截图程序方法
2015/02/18 Python
Python中subprocess模块用法实例详解
2015/05/20 Python
python实现各进制转换的总结大全
2017/06/18 Python
python实现简单中文词频统计示例
2017/11/08 Python
使用python3构建文件传输的方法
2019/02/13 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
python设置表格边框的具体方法
2020/07/17 Python
Python用户自定义异常的实现
2020/12/25 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
温泉秘密:Onsen Secret
2020/07/06 全球购物
白酒市场开发计划书
2014/01/09 职场文书
知识竞赛活动方案
2014/02/18 职场文书
《再见了,亲人》教学反思
2014/02/26 职场文书
出生医学证明书
2014/09/15 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
Java基础之this关键字的使用
2021/06/30 Java/Android
python_tkinter弹出对话框创建
2022/03/20 Python