首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python第三十六课——2.迭代器对象

python第三十六课——2.迭代器对象

作者头像
hankleo
发布2020-09-16 16:18:40
发布2020-09-16 16:18:40
3260
举报
文章被收录于专栏:Hank’s BlogHank’s Blog

满足前提: 1).必须是一个可迭代对象 2).可以被next()所作用的 举例: generator... 高效的检测一个对象是否是迭代器对象 需要使用collections模块中的Iterator类配合isinstance()内置函数来判断 步骤如下: 第一步:导入collections模块 第二步:collections.Iterator(类型)配合isinstance()函数来判断,代码如下: isinstance(obj,collections.Iterator) 如果返回值为True,那么它就是一个迭代器对象 如果返回值为False,那么它就不是一个迭代器对象 将可迭代对象转换为迭代器对象 内置函数:iter() 【注意】此函数必须只能调用可迭代对象,否则报错 演示是否是迭代器对象

代码语言:javascript
复制
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()函数所调用

代码语言:javascript
复制
print(next(lt))

将可迭代对象转换为迭代器对象 内置函数:iter() 【注意】此函数必须只能调用可迭代对象,否则报错

代码语言:javascript
复制
gen1=iter(lt)
print(gen1,type(gen1))

gen2=iter(tp)
print(gen2)

print(next(gen1))
print(next(gen2))

以下代码有问题: 因为100是int类型数据,它并不是一个Iterable(可迭代对象), 所以不能被iter()转换成为Iterator(迭代器对象)

代码语言:javascript
复制
gen3=iter(100)
print(gen3,type(gen3))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-02-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档