美文网首页大数据 爬虫Python AI Sql
Python3之手动创建迭代器

Python3之手动创建迭代器

作者: 若数 | 来源:发表于2019-05-21 22:16 被阅读2次
162.jpg

概述

迭代器即可以遍历诸如列表,字典及字符串等序列对象甚至自定义对象的对象,其本质就是记录迭代对象中每个元素的位置。迭代过程从第一个元素至最后一个元素,且过程不能回滚或反方向迭代。

两个基本方法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

相关文章

  • Python3之手动创建迭代器

    概述 迭代器即可以遍历诸如列表,字典及字符串等序列对象甚至自定义对象的对象,其本质就是记录迭代对象中每个元素的位置...

  • 迭代器与生成器(cookbook笔记)

    迭代器与生成器 手动遍历迭代器 不使用for循环手动遍历迭代器 代理迭代 在一个新的容器(class)中迭代对象 ...

  • Python3 - 手动遍历迭代器

    问题 遍历一个可迭代对象中的所有元素,但是却不想使用for循环。 解决方案 为了手动地遍历可迭代对象,使用 nex...

  • Python3简明教程五

    这部分主要说明Python3的迭代器、生成器、装饰器等相关知识。 来源:实验楼Python3简明教程 1. 迭代器...

  • python 教程笔记day8

    Python3 迭代器与生成器

  • Sequence 序列

    手动实现一个序列 //手动实现一个迭代器,这是一个迭代器类 class ReverseIterator :Iter...

  • Python map函数

    python3中返回迭代器: 函数map lambda map

  • Python3 迭代器与生成器

    Python3 迭代器与生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器是一个...

  • python cookbook第四章笔记

    4.1 手动遍历迭代器 你想遍历一个可迭代对象中的所有元素,但是却不想使用for循环。 为了手动的遍历可迭代对象,...

  • 迭代器

    创建一个迭代器,接收任意多个函数参数 创建多个异步的函数,注入到迭代器中

网友评论

    本文标题:Python3之手动创建迭代器

    本文链接:https://www.haomeiwen.com/subject/srvszqtx.html