python iterator iterable_Python中Iterator和Iterable的区别
python中list, str,truple, dict都是可以被迭代的,但他们不是迭代器。why?
list/truple/map/dict这些数据的大小是确定的,我们可以准确知道他们的size。
迭代器不知道要执行多少次,所以可以理解为不知道有多少个元素,每调用一次next(),就会往下走一步,是惰性的。
判断是不是可以迭代,用Iterable
from collectionsimport Iterable
isinstance({}, Iterable) -->True
isinstance((), Iterable) -->True
isinstance(100, Iterable) -->False
凡是可以for循环的都是Iterable
判断是不是迭代器,用Iterator
isinstance({}, Iterator) -->False
isinstance((), Iterator) -->False
isinstance( (xfor xin range(10)), Iterator) -->True
凡是可以.(next)的,都是Iterator.
备注:
集合数据类型如list,truple,dict,str,都是Itrable不是Iterator,但可以通过iter()函数获得一个Iterator对象
Python中的for循环就是通过next实现的
参考资料:https://www.jianshu.com/p/c523b4a8be6c
python iterator iterable_Python中Iterator和Iterable的区别相关推荐
- python os system_python中os. popen system的区别
python调用Shell脚本或者是调用系统命令,有两种方法: os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,正确会返回0,错误会返回其他数字. 后者的返回值 ...
- python安装copy_python中copy和deepcopy 的区别
请简述赋值, 深拷贝和浅拷贝的区别?(python中如何拷贝一个对象?) 直接赋值(li1 = li): 只传递对象的引用, li1指向对象li的内存地址空间, 因此, 原有列表li改变, 被赋值的l ...
- python axes_python matplotlib中axes与axis的区别?
1.axes subplot axis 先说第一个疑惑 Axes - Subplot - Axis 之间到底是个什么关系? 因为我是努力在看英文的教程,所以刚开始对axes和axis是基本搞不清的,一 ...
- python魔法方法中的__str__和__repr__区别
__str__(self): class Test1():def __str__(self):return 'I am __str__' #return即返回什么打印什么 >>>a ...
- Python RE模块中search()和match()的区别
match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配: 也就是说match()只有在0位置匹配成功的话才有返回, 如果不是开始位置匹配成功的 ...
- Python 中 Iterator和Iterable的区别
Python中 list,truple,str,dict这些都可以被迭代,但他们并不是迭代器.为什么? 因为和迭代器相比有一个很大的不同,list/truple/map/dict这些数据的大小是确定的 ...
- Python 中iterator
The two methods correspond to two distinct protocols: 1. An object can be iterated over with "f ...
- java中Iterator用法总结
Java中Iterator用法 迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级& ...
- Java中Iterator用法
迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为"轻量级"对象,因为创建它的代价 ...
最新文章
- MySQL创建相同表和数据命令
- MyEclipse搭建java Web项目开发环境
- LeetCode Arithmetic Slices(动态规划)
- 深入理解Linux socket
- AtCoder 4169 [ARC100D] Colorful Sequences(dp)
- 软考解析:2017年上半年下午试卷
- UVa10881 Piotr's Ants【模拟】
- 常用代码模板1 ----- 基础算法
- 自学python要多久-怎么自学python,大概要多久?
- My Data Sructure TemplatesClass
- 阿里云流水线主机离线启动
- sourceMap到底是个啥玩意?
- warning CS0618: 'WWW' is obsolete: 'Use UnityWebRequest, a fully featured replacement which is more
- 人脸识别算法-LBP算法及python实现
- 【英语阅读】经济学人 | 人脸识别不只是另一种技术。它将改变社会
- mybatis学习第一次使用
- linux ssh freeradius,配置FreeRADIUS提供AAA服务
- CC2541蓝牙学习——串口_0和1(寄存器版本)
- 批量下载网页上ts视频文件(撸sir!你还在为下载小电影而苦恼吗?)
- 交互设计和UI设计有区别吗 UI学习路线是什么