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生成pdf文件的方法
Aug 04 Python
Python MySQLdb模块连接操作mysql数据库实例
Apr 08 Python
Python实现ssh批量登录并执行命令
Oct 25 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 Python
Django 视图层(view)的使用
Nov 09 Python
Django实现学员管理系统
Feb 26 Python
python中比较两个列表的实例方法
Jul 04 Python
简单了解python的break、continue、pass
Jul 08 Python
详解如何减少python内存的消耗
Aug 09 Python
使用Python进行中文繁简转换的实现代码
Oct 18 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 Python
python标准库os库的函数介绍
Feb 12 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
php 获取完整url地址
2008/12/20 PHP
PHP 第二节 数据类型之转换
2012/04/28 PHP
php伪静态之APACHE篇
2014/06/02 PHP
php使用session二维数组实例
2014/11/06 PHP
Jquery中CSS选择器用法分析
2015/02/10 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
安装使用Mongoose配合Node.js操作MongoDB的基础教程
2016/03/01 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
信息滚动效果的实例讲解
2017/09/18 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
Python re模块介绍
2014/11/30 Python
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
Python实现简单字典树的方法
2016/04/29 Python
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
Pycharm调试程序技巧小结
2020/08/08 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
就业自荐信
2013/12/04 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
电影红河谷观后感
2015/06/11 职场文书
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL