迭代器

#获取一个对象的所有方法:dir()
s = 'ewcewc'
li = [1,2,3]
print(dir(s))
print(dir(li))
print('__iter__' in dir(s))  #潘多是不是可迭代对象,内部含有__iter__方法,就是可迭代对象

#内部含有__iter__且含有__next__的对象就是迭代器
with open('文件1', encoding='utf-8',mode='w') as f:
    print(('__iter__' in dir(f)) and ('__next__' in dir(f)))



#可迭代对象可以转化为迭代器
s = 'jvbhd'
obj = iter(s)   #或者s.__iter__()
print(obj)
print(next(obj))    #或者print(obj.__next__())
print(next(obj))

#迭代器取值用next取值,每次取值都会记住位置,不走回头路

li = [1,2,3,4,5,6,7]
obj = iter(li)
print(next(obj))
print(next(obj))
print(next(obj))
print(next(obj))
print(next(obj))


#利用while循环模拟for循环对可迭代对象进行取值的机制
li = [1,2,3,4,5,6,7]
obj = iter(li)
while 1:
    try:
        print(next(obj))
    except Exception:
        break

 

posted @ 2023-02-16 21:00  Wchime  阅读(16)  评论(0)    收藏  举报