迭代器協議:
知足兩個條件: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))
你們對內容有任何問題,歡迎留言,必定在第一時間解答,謝謝你們!對象