10.5叠代器
阿新 • • 發佈:2018-03-31
Python 叠代器 叠代器協議 for循環 叠代器
叠代器協議:
滿足兩個條件:1.有iter方法;2.有next方法
# -*-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方法
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))
大家對內容有任何問題,歡迎留言,一定在第一時間解答,謝謝大家!
10.5叠代器