python教程 迭代器(iterable)

一、迭代器

迭代、就是遍历。

迭代(或者遍历)特定范围内的数是一种常见的任务。

可迭代对象就是可用for循环进行遍历的对象。

我们先看一个简单的示例:
在这里插入图片描述
这是一个简单的for循环语句,在这个for循环中,我们即没有给i赋初始值,也没有给i赋终止值,也没有让i每次都加1,为什么程序在循环输出中就能从0输出到5呢?

因为range()函数会生成一个可迭代对象,range()函数内部会根据参数生成初始值、终止值并在每次循环时改变这个值的大小,我们可以实现一个自己的range()函数,为了不和range重名我们命名为myrange()。

由于涉及到对象,编写自己的迭代器时涉及到python中面向对象的基本概念,如果你对python中面向对象的基本概念还不清楚,可以点击这里。

二、迭代器的特点

1、一个标准的迭代器

class Fibs:

    def __init__(self):

        self.a = 0

        self.b = 1

def __next__(self):   #__next__用于返回下一个,返回下一个才能被称之为迭代器。

        self.a, self.b = self.b, self.a + self.b

        return self.a

def __iter__(self):   #__iter__用于返回自身,返回自身才能被调用。

        return self



fibs = Fibs()

for f in fibs:

    if f < 10:

        print(f)

2、迭代器走到头以后将什么都不会被打印出

class TestIterator:

    value = 0

    def __next__(self):

        self.value += 1

        if self.value > 10: raise StopIteration

        return self.value

    def __iter__(self):

        return self



ti = TestIterator()



for i in ti:   

    print(i)

###迭代器迭代到最后就会停止,如果想从头开始必须重新创建迭代器

###下面的循环什么都不会打印出来

print("xxx")    

for i in ti:   

    print(i)

3、如果迭代器没有走到最后,下一次将从上次结束的地方开始

class TestIterator:

    value = 0

    def __next__(self):

        self.value += 1

        if self.value > 10: raise StopIteration

        return self.value

    def __iter__(self):

        return self



ti = TestIterator()

for i in ti:   

    if i < 5:

        print(i)

        if i == 4: break



###迭代器如果没有走到最后,下一次将从上次停止的地方开始

print("xxx")    

for i in ti:   

    print(i)

看完了迭代器,我们再来认识一下python中的生成器
欢迎收看:如何自学人工智能

猜你喜欢

转载自blog.csdn.net/eisenhowerlong/article/details/88366386
今日推荐