生成器都是迭代器,迭代器不一定是生成器。
list,tuple,dict,string:interable(可迭代对象)
l=[1,2,3,4]
a=iter(l)
print(a)#<list_iterator object at 0x0000000000BD8B38>
print(next(a))#1
#迭代器是什么?
#满足两个条件:1.有iter方法 2.有next方法
for i in l:
print(i,'',end='')#1 2 3 4
#for语句内部做的三件事:
#1.调用可迭代对象的iter方法,返回一个迭代器对象
#2.不断调用迭代器对象的next方法
#3.处理StopIteration异常
(生成器generator 迭代器iterator 可迭代对象iterable 容器container)