迭代器

迭代器

1、迭代器是访问集合元素的一种方式;是可以记住遍历位置的对象;
2、迭代对象从集合的第一个元素开始访问,直到所有的元素被访问结束;迭代器只能往前不能往后推
3、迭代器的两种方法:iter()和next()

#字符串、列表或元组对象都可以创建迭代器
l = range(5)
it = iter(l)  #创建迭代对象
print(next(it))  #返回:0
print(next(it))  #返回:1
print(next(it))  #返回:2
print(next(it))  #返回:3
print(next(it))   #返回:4
print(next(it))   #报错:StopIteration
#迭代对象用for循环遍历
l1 = range(5,11)
it1 = iter(l1)   #创建迭代对象
for i in it1:
    print(i,end = " ")

#执行代码返回:5 6 7 8 9 10

#使用next()函数

mport sys #引入sys模块
l3 = range(11,16)
it3 = iter(l3)

while True:
    try:
        print(next(it3))  #创建迭代对象
    except StopIteration:
        sys.exit()

#执行返回:

11
12
13
14
15


创建一个迭代器
把类作为一个迭代器使用,需要在勒种实现两个方法__iter__()与__next__()
class MyNumber:
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):
        x = self.a
        self.a += 1
        return x

myclass = MyNumber()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))

#执行代码
#1
#2
#3
StopIteration 异常用于标识迭代的完成,防止出现无限循环;
在__next()__方法中可设置完成循环的次数后,出发异常来结束循环
class MyNumber1():
    def __iter__(self):
        self.a = 1
        return self

    def __next__(self):
        if self.a <= 10:
            x = self.a
            self.a += 1
            return x
        else:
            raise StopIteration

myclass1 = MyNumber1()
myiter1 = myclass1
for i in myiter1:
    print(i)





原文地址:https://www.cnblogs.com/ff-gaofeng/p/11483831.html