对Python中Iterator和Iterable的区别详解


Posted in Python onOctober 18, 2018

Python中 list,truple,str,dict这些都可以被迭代,但他们并不是迭代器。为什么?

因为和迭代器相比有一个很大的不同,list/truple/map/dict这些数据的大小是确定的,也就是说有多少事可知的。但迭代器不是,迭代器不知道要执行多少次,所以可以理解为不知道有多少个元素,每调用一次next(),就会往下走一步,是惰性的。

判断是不是可以迭代,用Iterable

from collections import Iterable
isinstance({}, Iterable) --> True
isinstance((), Iterable) --> True
isinstance(100, Iterable) --> False

判断是不是迭代器,用Iterator

from collections import Iterator
isinstance({}, Iterator) --> False
isinstance((), Iterator) --> False
isinstance( (x for x in range(10)), Iterator) --> True

所以,

凡是可以for循环的,都是Iterable

凡是可以next()的,都是Iterator

集合数据类型如list,truple,dict,str,都是Itrable不是Iterator,但可以通过iter()函数获得一个Iterator对象

Python中的for循环就是通过next实现的

for x in [1,2,3,4,5]:
 pass

等价于

#先获取iterator对象
it = iter([1,2,3,4,5])
while True:
 try:
  #获取下一个值
  x = next(it);
 except StopIteration:
  # 遇到StopIteration就退出循环
  break

以上这篇对Python中Iterator和Iterable的区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之折腾一下目录
Oct 24 Python
python对数组进行反转的方法
May 20 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
django框架如何集成celery进行开发
May 24 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
Python实现把多维数组展开成DataFrame
Nov 30 Python
python中如何使用insert函数
Jan 09 Python
Python线程threading模块用法详解
Feb 26 Python
Python实现将元组中的元素作为参数传入函数的操作
Jun 05 Python
python中setuptools的作用是什么
Jun 19 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
Mar 03 Python
解析目标检测之IoU
Jun 26 Python
对python中的iter()函数与next()函数详解
Oct 18 #Python
对Python 3.2 迭代器的next函数实例讲解
Oct 18 #Python
对python中的高效迭代器函数详解
Oct 18 #Python
对Python中内置异常层次结构详解
Oct 18 #Python
Python运维开发之psutil库的使用详解
Oct 18 #Python
python实现自动登录后台管理系统
Oct 18 #Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 #Python
You might like
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP发送AT指令实例代码
2016/05/26 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
JavaScript进阶教程(第四课第一部分)
2007/04/05 Javascript
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
javascript call方法使用说明
2010/01/11 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
AngularJS的Filter的示例详解
2017/03/07 Javascript
jQuery中each循环的跳出和结束实例
2017/08/16 jQuery
vue登录路由验证的实现
2017/12/13 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
在vue中高德地图引入和轨迹的绘制的实现
2019/10/11 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
python3.4中清屏的处理方法
2020/07/06 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
Python实现简单猜数字游戏
2021/02/03 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
数学检讨书1000字
2014/02/24 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
个人年终总结怎么写
2015/03/09 职场文书
运动会班级前导词
2015/07/20 职场文书