python第三十六课——2.迭代器对象
满足前提: 1).必须是一个可迭代对象 2).可以被next()所作用的 举例: generator... 高效的检测一个对象是否是迭代器对象 需要使用collections模块中的Iterator类配合isinstance()内置函数来判断 步骤如下: 第一步:导入collections模块 第二步:collections.Iterator(类型)配合isinstance()函数来判断,代码如下: isinstance(obj,collections.Iterator) 如果返回值为True,那么它就是一个迭代器对象 如果返回值为False,那么它就不是一个迭代器对象 将可迭代对象转换为迭代器对象 内置函数:iter() 【注意】此函数必须只能调用可迭代对象,否则报错 演示是否是迭代器对象
import collections str1 = 'abcd'
lt = [1,2,3,4]
tp = (11,22,33)
s = {100,200,300,400}
dic1 = {'AA':'aa','BB':'bb'}
r = range(10)
gen = (x for x in range(5))
print(isinstance(str1,collections.Iterator))
print(isinstance(lt,collections.Iterator))
print(isinstance(tp,collections.Iterator))
print(isinstance(s,collections.Iterator))
print(isinstance(dic1,collections.Iterator))
print(isinstance(r,collections.Iterator))
print(isinstance(gen,collections.Iterator))
以下代码报错了:只有Iteratot对象才能被next()函数所调用
print(next(lt))
将可迭代对象转换为迭代器对象
内置函数:iter()
【注意】此函数必须只能调用可迭代对象,否则报错
gen1=iter(lt)
print(gen1,type(gen1)) gen2=iter(tp)
print(gen2) print(next(gen1))
print(next(gen2))
以下代码有问题:
因为100是int类型数据,它并不是一个Iterable(可迭代对象),
所以不能被iter()转换成为Iterator(迭代器对象)
gen3=iter(100)
print(gen3,type(gen3))
python第三十六课——2.迭代器对象的更多相关文章
- python第三十六课——1.可迭代对象
1.可迭代对象: 满足前提: 只要能被循环操作的对象,就可以可迭代对象 举例: str.list.tuple.set.dict.range.generator... 高效的检测一个对象是否是可迭代对象 ...
- NeHe OpenGL教程 第三十六课:从渲染到纹理
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- python第三十二课——队列
队列:满足特点 --> 先进先出,类似于我们生活中的买票.安检 [注意] 对于队列而言:python中有为其封装特定的函数,在collections模块中的deque函数就可以获取一个队列对象; ...
- 第三十六课:如何书写一个完整的ajax模块
本课主要教大家如何书写一个完整的ajax模块,讲解的代码主要跟ajax有关,而jQuery的ajax模块添加了Deferred异步编程的机制,因此对ajax的理解难度增大,还是忽略掉.但是我要讲解的代 ...
- Python笔记(十六):迭代器
(一)iterable对象和Iterator对象的区别 iterable对象(可迭代的对象):可以使用for循环,例如:字符串.列表 .字典 .集合等 Iterator对象(迭代器):除了可以用for ...
- python第三十八课——面向对象(一)
1.面向对象:(思想) 面向:看.关注.瞅 对象:个体.实体.实例.结果单词:object在python中一些皆对象 面向过程:(思想) 面向:看.关注.瞅 过程:经过.经历.从头到尾 使用一些生活中 ...
- python第三十二课——栈
栈:满足特点 --> 先进后出,类似于我们生活中的子弹夹 [注意] 对于栈结构而言:python中没有为其封装特定的函数,我们可以使用list(列表)来模拟栈的特点 使用list对象来模拟栈结构 ...
- 笨办法学Python(三十六)
习题 36: 设计和调试 现在你已经学会了“if 语句”,我将给你一些使用“for 循环”和“while 循环”的规则,一面你日后碰到麻烦.我还会教你一些调试的小技巧,以便你能发现自己程序的问题.最后 ...
- Python学习第二十六课——PyMySql(python 链接数据库)
Python 链接数据库: 需要先安装pymysql 包 可以设置中安装,也可以pip install pymysql 安装 加载驱动: import pymysql # 需要先安装pymysql 包 ...
随机推荐
- WPF--模板选择
典型的,把模板关联到一块特定的数据上,不过通常希望动态的确定使用哪个模板---既可以基于一个属性值,也可以是一个全局状态.当真正需要大规模替换模板时,也可以使用DataTempl ...
- iis 程序池设置及详解-20180720
[非原创,好文收藏,分享大家] 公司的一个网站程序长时间运行后,速度变慢,重新启动网站后速度明显变快,估计是网站程序占用的内存和CPU资源没能及时释放,才需要每隔一段时间重启网站释放资源.但手工重启总 ...
- RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列
一.理论: .net环境下,C#代码调用RabbitMQ消息队列,本文用easynetq开源的.net Rabbitmq api来实现. EasyNetQ 是一个易于使用的RabbitMQ的.Net客 ...
- Net is as typeof 运行运算符详解
概述 在了解运行运算符的前提我们需要了解什么是RTTI ,在任何一门面向对象的语言中,都有RTTI这个概念(即 运行时). RTTI(Run-Time Type Identification),通过运 ...
- PHP开发环境安装说明书
php安装说明书 需要安装包可以拿U盘找技术--小豪拷贝. 一.安装对象和安装顺序 0 vcredist_x64.exe(Microsoft Visual C++ 运行时文件和操作系统组件) 1 ...
- ubuntu修改ssh服务的端口号
一.找到ssh配置文件位置 vim /etc/ssh/sshd_config 二.修改ssh登录端口号 修改 port 22 为 port xxxx 三.重启ssh服务 /etc/init.d/ssh ...
- python MRO及c3算法
1. 了解python2和python3类的区别 python2在2.3之前使用的是经典类, 2.3之后, 使用的是新式类 2. 经典类的MRO 树形结构的深度优先遍历 -> 树形结构遍历 cl ...
- influxdb-1.7.2.x86_64安装 install influxdb-1.7.2.x86_64 on RedHat & CentOS
1.下载安装 wget http://dl.influxdata.com/influxdb/releases/influxdb-1.7.2.x86_64.rpm https://portal.infl ...
- 【代码笔记】iOS-字符串替换回车和换行
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...
- JS 对数组的操作集锦(基础)
下面内容是自己复习基础时候整理出来的,感谢缪雪峰老师的课程让自己可以有节奏的复习基础的东西! 以下内容颜色是重点关注,已经特别注意提醒,不是为了颜色好看噢,希望能帮到刚学习前端的朋友们,后续还会持续更 ...