练习代码:
#可迭代对象: 可以直接作用于for循环的对象统称为可迭代对象 #可以直接作用于for的数据类型一般分两种: # 1:集合数据类型 如:list,tuple,set,string # 2: 是generator,包括生成器和带yield的generator function from collections import Iterable from collections import Iterator print(isinstance([],Iterable)) print(isinstance((),Iterable)) print(isinstance({},Iterable)) print(isinstance("",Iterable)) print(isinstance(1,Iterable)) print(isinstance((x for x in range(10)),Iterable)) print("*****************************") print(isinstance([],Iterator)) print(isinstance((),Iterator)) print(isinstance({},Iterator)) print(isinstance("",Iterator)) print(isinstance(1,Iterator)) print(isinstance((x for x in range(10)),Iterator)) #迭代器 : 不但可以作用 for 循环, 还可被next()函数不断调用并返回,返回下一个值,直到最后跑出一个StopIteration错误,无法返回下一个值 #可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator对象) #可以使用isinstance()函数判断 print("*****************************") a = (x for x in range(5)) print(next(a)) print(next(a)) print(next(a)) print(next(a)) print(next(a)) #print(next(a)) 第六个报错 #转成Iterator对象 print("*****************************") b = iter([1,2,3,4,5]) print(next(b)) print("*****************************") print(isinstance(iter([]),Iterator)) print(isinstance(iter({}),Iterator)) print(isinstance(iter(()),Iterator)) print(isinstance(iter(""),Iterator)) 运行结果:
D:\pycharm\python\venv\Scripts\python.exe D:/pycharm/python/016迭代器.py
True
True
True
True
False
True
*****************************
False
False
False
False
False
True
*****************************
0
1
2
3
4
*****************************
1
*****************************
True
True
True
True
Process finished with exit code 0