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 mysqldb连接数据库
Mar 16 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 Python
python使用电子邮件模块smtplib的方法
Aug 28 Python
基于python神经卷积网络的人脸识别
May 24 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
python程序如何进行保存
Jul 03 Python
python求解汉诺塔游戏
Jul 09 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 Python
使用pipenv管理python虚拟环境的全过程
Sep 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
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
PHP实现百度人脸识别
2019/05/06 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
vue-lazyload使用总结(推荐)
2018/11/01 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
python简单线程和协程学习心得(分享)
2017/06/14 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
python cumsum函数的具体使用
2019/07/29 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
DIY蛋糕店的创业计划书范文
2013/12/26 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
航海技术专业毕业生求职信
2014/04/06 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
史上最牛辞职信
2015/05/13 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
Python中requests库的用法详解
2022/06/05 Python
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript