python入门之迭代器
迭代器
已知,可以直接作用于for循环的数据类型有:
一类是集合数据类型,如list、tuple、dict、set、str
一类是generator,包括生成器和带yield的generator function
这些可以直接作用于for循环的对象统称为可迭代对象:Iterable
判断是否为可迭代对象:
>>> from collections import Iterable >>> isinstance([],Iterable) True >>> isinstance({},Iterable) True >>> isinstance('abc',Iterable) True >>> isinstance(x*2 for x in range(10),Iterable) True >>> isinstance(100,Iterable) False
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
判断是否为迭代器:
>>> from collections import Iterator >>> isinstance([],Iterator) False >>> isinstance({},Iterator) False >>> isinstance('abc',Iterator) False >>> isinstance((x*2 for x in range(10)),Iterator) True >>> isinstance(100,Iterator) False
使用iter()函数可将list、dict、str等Iterable变成Iterator
为什么list、dict、str等数据类型不是Iterator?
因为python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误,可以把这个数据流看作是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。
Iterator可以表示一个无限大的数据流,例如全体自然数,而使用list是永远不可能存储全体自然数的。
另外:
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
转载于:https://www.cnblogs.com/chy-op/p/10179638.html
python入门之迭代器相关推荐
- python入门教程非常详细-Python编程入门教程:从入门到高级,非常详细
本文的资料和内容是我下载的,觉得非常有用,于是转过来大家瞧瞧: 这里给初学Python的朋友提供一些建议和指导吧.大神请无视, 俗话说:授人以鱼不如授人以渔.所以我这里只是阐述学习过程,并不会直接详细 ...
- python入门指南pdf-跟老齐学Python+从入门到精通 PDF 下载
相关截图: 资料简介: 本书是面向编程零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用.以比较轻快的风格,向零基础的学习者介绍一门时下比较流行.并且用途比较广泛的编程语言, ...
- python基础教程书籍推荐-初学者python入门必看书籍推荐(上)
随着最近Python的热度上涨,学习的人数也在增多,也因为Python这门语言的简短.易学.语言优美的优点,吸引了很多人来学习它.初学者想要入门,就必须先通过阅读,学习大量的理论知识对Python有一 ...
- python快速编程入门黑马-新手如何快速入门Python编程?/开发python入门教程
Python从入门到实践的教程是什么? 第一阶段Python与Linux数据这是Python的入段,也是帮助零基础学员打好基础的重要阶段,让零基础学员可以具备基础的编程能力,并掌握MySQL进阶内容. ...
- python入门教程非常详细-python初学者怎么入门:python入门教程非常详细
python安装后如何打开 ,先找到python安装位置. python学习网,大量的免费python入门教程,在线学习! 进装目录之后,点击Lib文件夹. 相关推荐:<Python教程> ...
- Python入门篇-高级数据类型集合(set)和字典(dict)
Python入门篇-高级数据类型集合(set)和字典(dict) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.集合(set) 1>.集合的特点 约定set 翻译为集合c ...
- python入门之控制结构-循环结构_Python 入门之控制结构 - 循环结构(一)
第1关:While 循环与 break 语句 程序的第三大结构是循环结构.在此结构中,通过一个判断语句来循环执行一个代码块,直到判断语句为假时跳出循环.循环语句分为while循环.for循环.循环嵌套 ...
- python入门题目及答案_Python基础自测题答案和基础知识梳理
Python基础自测题答案和基础知识梳理 1.关于Python中的lambda表达式的函数体自能是单独一条语句,所以答案选择C. 例如:>>>g = lambda x: 2*x+1 ...
- Python入门 推导式 ! 解释:生成器表达式和列表推导式的区别
Python 入门之 推导式 学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895,817, 687 有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家 ...
最新文章
- opencv学习笔记(六)---图像梯度
- 光速AStar寻路算法(C++)
- mysql iostat_通过『iostat -dx 1』命令监控IO性能
- c#Clay开源的动态语言dynamic框架,让您形如javascript的方式创建对象!
- 记一次 React 组件无法更新状态值的问题分析与解决
- python花式输出_关于python字符串format的一些花式用法
- 30问提升技术人写作力-第1问作业
- Spring_Hibernate
- Java必知必会之socket
- atitit. 研发管理---如何根据自己的特挑选 产业、行业、职业、岗位与自己发展的关系
- 进销存软件排行榜前十名!
- JVisualVM的使用教程
- android 开机优化,android5.0在开机优化应用的时候,怎么关闭优化强制启动
- linux系统声卡安装教程,Linux操作系统声卡驱动的安装与配置
- 采用腾讯云直播断流续播相关问题
- Windows XP SP3截至2011年4月更新补丁汇总(WinXP补丁包) 修正版
- 【阅读笔记】Cost Volume Pyramid Based Depth Inference for Multi-View Stereo
- Fedora 9.0 官方下载
- A brief introduction to complex analysis
- [论文翻译]Sparse R-CNN: End-to-End Object Detection with Learnable Proposals