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之编写类之二方法
Oct 11 Python
Python Web框架Flask下网站开发入门实例
Feb 08 Python
详解Python中with语句的用法
Apr 15 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
python 换位密码算法的实例详解
Jul 19 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
使用python检查yaml配置文件是否符合要求
Apr 09 Python
python中for in的用法详解
Apr 17 Python
python实现凯撒密码、凯撒加解密算法
Jun 11 Python
详解Python内置模块Collections
Mar 22 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 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生成静态页面详解
2006/11/19 PHP
php中截取字符串支持utf-8
2007/01/18 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
单击某一段文字改写文本颜色
2014/06/06 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
Python中的yield浅析
2014/06/16 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
python实现在一个画布上画多个子图
2020/01/19 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
美国棒球装备和用品商店:Baseball Savings
2018/06/09 全球购物
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
超市周年庆活动方案
2014/08/16 职场文书
制定企业培训计划的五大要点!
2019/07/10 职场文书
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis