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 面向对象 成员的访问约束
Dec 23 Python
python实现斐波那契递归函数的方法
Sep 08 Python
python的Tqdm模块的使用
Jan 10 Python
Python列表的切片实例讲解
Aug 20 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
Python如何发送与接收大型数组
Aug 07 Python
Python 在 VSCode 中使用 IPython Kernel 的方法详解
Sep 05 Python
python安装及变量名介绍详解
Dec 12 Python
python中Mako库实例用法
Dec 31 Python
python asyncio 协程库的使用
Jan 21 Python
自己搭建resnet18网络并加载torchvision自带权重的操作
May 13 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数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
PHP使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
Prototype 学习 Prototype对象
2009/07/12 Javascript
Mootools 1.2教程(3) 数组使用简介
2009/09/14 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
2014/12/19 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
JavaScript实现精美个性导航栏筋斗云效果
2017/10/29 Javascript
JS文件中加载jquery.js的实例代码
2018/05/05 jQuery
Vue.js 中 axios 跨域访问错误问题及解决方法
2018/11/21 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
深入理解Python装饰器
2016/07/27 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
python中使用while循环的实例
2019/08/05 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
python程序文件扩展名知识点详解
2020/02/27 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
三严三实民主生活会发言稿
2014/10/13 职场文书
房屋认购协议书
2015/01/29 职场文书
文体活动总结
2015/02/04 职场文书
入队仪式主持词
2015/07/04 职场文书
python实现简单区块链结构
2021/04/25 Python
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题
java代码实现空间切割
2022/01/18 Java/Android
中国古风插画师排行榜:夏达第一,第三是阴阳师姑获鸟皮肤创作者
2022/03/18 国漫