内容简介:迭代器即可以遍历诸如列表,字典及字符串等序列对象甚至自定义对象的对象,其本质就是记录迭代对象中每个元素的位置。迭代过程从第一个元素至最后一个元素,且过程不能回滚或反方向迭代。序列对象可以利用示例结果:
迭代器即可以遍历诸如列表,字典及字符串等序列对象甚至自定义对象的对象,其本质就是记录迭代对象中每个元素的位置。迭代过程从第一个元素至最后一个元素,且过程不能回滚或反方向迭代。
两个基本方法iter、next
序列对象可以利用 iter()
直接创建迭代器,并通过 next()
即可迭代迭代器。
利用for循环迭代
S = 'PYTHON' IT = iter(S) for it in IT: print(it) 复制代码
示例结果:
P Y T H O N 复制代码
利用next()迭代
S = 'PYTHON' IT = iter(S) print(next(IT)) print(next(IT)) print(next(IT)) print(next(IT)) print(next(IT)) print(next(IT)) 复制代码
示例结果:
P Y T H O N 复制代码
当我们使用next()迭代时,如果迭代了次数超过了迭代器中的元素个数就会引发 StopIteration
,由此我们可以利用 while
循环迭代,并不断捕捉迭代结束的异常完成for循环的迭代过程。
S = 'PYTHON' IT = iter(S) while True: try: print(next(IT)) except StopIteration: break 复制代码
P Y T H O N 复制代码
手动构建迭代器
把一个类作为一个迭代器使用需要在类中实现两个方法 iter
() 与 next
() 。 iter
() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 next
() 方法并通过 StopIteration 异常标识迭代的完成。 next
() 方法(Python 2 里是 next())会返回下一个迭代器对象。下面这个类构造了一个迭代器接受一个可迭代的数字,每次迭代都返回上一次迭代结果的平方,当迭代结果大于 9999999999999
时抛出异常。利用该类创建示例对数字2进行平方和迭代。
class IT_SQUARE: def __init__(self, x): self.x = x def __next__(self): self.x = self.x ** 2 if self.x > 9999999999999: raise StopIteration else: return self.x def __iter__(self): return self IT1 = IT_SQUARE(2) while True: try: print(IT1.__next__()) except StopIteration: break 复制代码
示例结果
4 16 256 65536 4294967296 复制代码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Ajax Design Patterns
Michael Mahemoff / O'Reilly Media / 2006-06-29 / USD 44.99
Ajax, or Asynchronous JavaScript and XML, exploded onto the scene in the spring of 2005 and remains the hottest story among web developers. With its rich combination of technologies, Ajax provides a s......一起来看看 《Ajax Design Patterns》 这本书的介绍吧!