迭代器协议:
知足两个条件:1.有iter方法;2.有next方法ide
# -*-coding:utf-8 -*- __date__ = '2018/3/18 ' __author__ = 'xiaojiaxin' __file_name__ = '迭代器' #生成器都是迭代器,迭代器不必定是生成器 l=[1,2,3,4] d=iter(l) print(d) # <list_iterator object at 0x000000CB6FC4B1D0> print(next(d)) for i in d: print(i)
for循环内部三件事:
1.调用可迭代对象的iter方法,返回一个迭代器对象;
2.调用迭代器的next方法
3.处理StopIteration方法code
for i in [1,2,3,4]: print(i) # [1,2,3,4]自己没有next方法,是for循环给他作的
from collections import Iterator from collections import Iterable print(isinstance([1,2,3,4],list)) #判断是否为指定数据类型 # True print(isinstance(1,list)) # False print(isinstance([1,2],Iterable)) # True print(isinstance([1,2],Iterator)) # False # [1,2]是可迭代对象,可是不是迭代器
在for 循环里也把文件转换成了迭代器 max1=0 record=0 count=1 with open("hello.txt","r",encoding="utf-8") as f: for i in f: if len(i.strip())>max1: max1=len(i) record=i count+=1 print("the longest sentence is %s,it is the %d line,It has %d words"%(record,count,max1))
你们对内容有任何问题,欢迎留言,必定在第一时间解答,谢谢你们!对象