迭代器对象从集合的第一个元素开始访问,直到所有的元素访问结束,只能往前不能后退;
iterable = iter(seq) | 创建迭代器对象; |
next(iterable) | 访问迭代器的下一个元素; |
迭代器对象可以使用 for 语句进行遍历;
演示如下:
a_tuple = (1, 2, 3, 'a', 'b', 'c')
it1 = iter(a_tuple)
it2 = iter(a_tuple)
print(next(it1))
print(next(it1))
for i in it1:
print(i, end=' ')
print()
for j in it2:
print(j, end=' ')
创建迭代器:
通过编写方法 __iter__() 和方法 __next__(),可以将类作为迭代器使用;
__iter__() 方法返回一个特殊的迭代器对象;
__next__()方法返回下一个迭代器对象;
演示如下:
class It:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
it = It()
it = iter(it)
for i in range(8):
print(next(it), end=' ')
在 __next__() 方法中设置 StopIteration 异常,可以在完成指定循环次数后通过触发异常来结束迭代,演示如下:
class It:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 8:
x = self.a
self.a += 1
return x
else:
raise StopIteration
it = It()
it = iter(it)
for i in it:
print(i, end=' ')