对象必须提供一个next方法,执行该方法或者返回迭代中的下一项,或者返回一个stopiteration异常,以终止迭代(只能往后走不能往前退)
实现了迭代器协议的对象,对象内部定义一个__iter__()方法
字符串、列表,元组,字典,集合,文件等都不具有next方法,所以他们都不是可迭代对象(iterable object),但是为什么for循环可以进行呢?
原因:for循环首先调用了他们的内置方法__iter()__方法将其转换为可迭代对象,然后再调用这个转换后的可迭代对象的__next()__方法,进行迭代。
l = [1,2,3] # iterable object iter_l = l.__iter__() print(iter_l.__next__())
字符串、列表、元组为有序序列,也可以通过索引取值,但是字典、集合、文件等非序列类型,所以出现了for循环,一个基于迭代器协议的统一的遍历方式
l = [1,2,3]
detail_l=l.__iter__() while true: try: print(detail_l.__next__()) except stopiteration: print('end of iteration') break
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
07 ,df 列操作,行操作 : 增,删,改,查,计算,列过滤
网友评论