#迭代器
"""
1、生成器都是迭代器,迭代器不一定是生成器
2、满足下面连个条件就是迭代器
有iter方法
有next方法
"""
# 示例1、一个迭代器
list1 = [1, 2, 4]
d = iter(list1)
# 打印类型
print(type(d))
# 取值
next(d)
next(d)
# for循环本质
"""
1、调用可迭代对象的iter方法返回一个迭代器对象
2、调用迭代器的next方法取值
3、处理stopIteration异常(取完迭代器中所有值)
"""
# 判断是否是迭代器
from collections import Iterable, Iterator
print(isinstance(d, Iterator)) # 是否是迭代器
print(isinstance(d, Iterable)) # 是否可迭代
# 小结
"""
1、凡是可是使用for循环的都是Iterable
2、凡是有next的都是Iterator
3、集合数据类型如list,truple,dict,str,都是Itrable不是Iterator,但可以通过iter()函数获得一个Iterator对象
"""
# 示例2Iterable和Iterator
# 元组字典都是可迭代的
print(isinstance({}, Iterable))
print(isinstance((), Iterable))
print(isinstance(100, Iterable))
# 元组字典都不是迭代器,但是可以通过iter(),函数获得一个迭代器
print(isinstance({}, Iterator))
print(isinstance((), Iterator))
print(isinstance((iter([])), Iterator))
# for循环本质1,调用可迭代对象的iter方法返回一个迭代器对象
print(isinstance((x for x in range(10)), Iterator))
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。