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 相关文章推荐
Python 自动安装 Rising 杀毒软件
Apr 24 Python
基于python的汉字转GBK码实现代码
Feb 19 Python
python中正则表达式的使用方法
Feb 25 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
使用Template格式化Python字符串的方法
Jan 22 Python
快速排序的四种python实现(推荐)
Apr 03 Python
python中的decimal类型转换实例详解
Jun 26 Python
Python如何调用JS文件中的函数
Aug 16 Python
vscode+PyQt5安装详解步骤
Aug 12 Python
Python基于locals返回作用域字典
Oct 17 Python
Python 多进程原理及实现
Dec 21 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
PHP如何抛出异常处理错误
2011/03/02 PHP
php错误级别的设置方法
2013/06/17 PHP
CI框架中libraries,helpers,hooks文件夹详细说明
2014/06/10 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
用Javascript实现UTF8编码转换成gb2312编码
2006/12/22 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
javascript实现unicode与ASCII相互转换的方法
2015/12/10 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
图解js图片轮播效果
2015/12/20 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
Layui 动态禁止select下拉的例子
2019/09/03 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
python实现sublime3的less编译插件示例
2014/04/27 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
Python 获取windows桌面路径的5种方法小结
2019/07/15 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
荷兰电脑专场:Paradigit
2018/05/05 全球购物
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
优秀实习自我鉴定
2013/12/04 职场文书
销售实习自我鉴定
2013/12/07 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
向领导表决心的话
2014/03/11 职场文书
2014年端午节活动方案
2014/03/11 职场文书
小学生环保倡议书
2014/05/15 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
收入证明范本
2015/06/12 职场文书
MySQL 数据丢失排查案例
2021/05/08 MySQL
详解在OpenCV中如何使用图像像素
2022/03/03 Python