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函数中*args和**kwargs来传递变长参数的用法
Jan 26 Python
老生常谈Python进阶之装饰器
May 11 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
python导出hive数据表的schema实例代码
Jan 22 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
Python3转换html到pdf的不同解决方案
Mar 11 Python
Python迭代器协议及for循环工作机制详解
Jul 14 Python
Python趣味入门教程之循环语句while
Aug 26 Python
python打包多类型文件的操作方法
Sep 21 Python
Pandas DataFrame求差集的示例代码
Dec 13 Python
解决pycharm修改代码后第一次运行不生效的问题
Feb 06 Python
Python 发送SMTP邮件的简单教程
Jun 24 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编写大型网站问题集
2007/03/06 PHP
实用函数7
2007/11/08 PHP
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
浅谈Webpack打包优化技巧
2018/06/12 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
详解利用eventemitter2实现Vue组件通信
2019/11/04 Javascript
python根据路径导入模块的方法
2014/09/30 Python
python开发中range()函数用法实例分析
2015/11/12 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
使用python-pptx包批量修改ppt格式的实现
2020/02/14 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
python如何求圆的面积
2020/07/01 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
CSS3轻松实现清新 Loading 效果的简单实例
2016/06/06 HTML / CSS
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
PHP高级工程师面试问题推荐
2013/01/18 面试题
毕业生个人求职信范文分享
2014/01/05 职场文书
小学校长先进事迹材料
2014/05/13 职场文书
银行求职自荐信
2014/06/30 职场文书
六一儿童节标语
2014/10/08 职场文书