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 相关文章推荐
详解Python2.x中对Unicode编码的使用
Apr 03 Python
详解Django中的过滤器
Jul 16 Python
Python编程之gui程序实现简单文件浏览器代码
Dec 08 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
linux查找当前python解释器的位置方法
Feb 20 Python
钉钉群自定义机器人消息Python封装的实例
Feb 20 Python
基于python的socket实现单机五子棋到双人对战
Mar 24 Python
使用IDLE的Python shell窗口实例详解
Nov 19 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
Python接口测试数据库封装实现原理
May 09 Python
Python 私有属性和私有方法应用场景分析
Jun 19 Python
Python 利用flask搭建一个共享服务器的步骤
Dec 05 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设计模式 Mediator (中介者模式)
2011/06/26 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
jquery中get和post的简单实例
2014/02/04 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
python获得一个月有多少天的方法
2015/06/04 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
Django开发的简易留言板案例详解
2018/12/04 Python
Python中的 enum 模块源码详析
2019/01/09 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
Python程序控制语句用法实例分析
2020/01/14 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
EJB实例的生命周期
2016/10/28 面试题
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
教师师德反思材料
2014/02/15 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
《西门豹》教学反思
2016/02/23 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS