# 迭代器
# 迭代==再上一个版本的基础上,在更新一个版本
# 可迭代对象
# 以直接作用于for循环的数据类型有以下几种:
# 一类是集合数据类型: 如 list 、tuple、dict、set、str等
# 一类是generator,包括生成器和带yield的generator function。
# 这些可以直接作用于for循环的对象统称为可迭代对象: Iterable
for a in "abc":
print(a)
for temp in [11,22,33,44,55]:
print(temp)
#
a = [x for x in range(10)]
# 生成器
b = (x for x in range(10)) #迭代器
# 如判断是否可以迭代
from collections import Iterator
isinstance("abc",Iterator) #True
isinstance([],Iterator) #False
isinstance({},Iterator) #True
isinstance(100,Iterator) #False
# >>> a = [11,22,33,44]
# >>> next(a)
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# TypeError: 'list' object is not an iterator
# 迭代器一定一个迭代,生成器一定是迭代器
# iter()函数 == 用来生成迭代器
a = [11,22,33]
type(a) #list
# 把list转换为可迭代对象
b = iter(a)
next(b)
# 列表占用的空间大,生成器的占用空间小。