python学习——可迭代对象与迭代器对象及创建迭代器的三种方式

python 可迭代对象——Iterable

Python中经常使用for来对某个对象进行遍历,此时被遍历的这个对象就是可迭代对象,像常见的list、tuple、dict、set、str都是。如果给一个准确的定义的话,就是只要它定义了可以返回一个迭代器的iter方法,或者定义了可以支持下标索引的getitem方法,那么它就是一个可迭代对象。

python 迭代器对象——Iterator

迭代器是通过next()来实现的,每调用一次他就会返回下一个元素,当没有下一个元素的时候返回一个StopIteration异常,所以实际上定义了这个方法的都算是迭代器。迭代器一定是可迭代对象,反过来则不一定成立。用iter()函数可以把list、dict、str等Iterable变成Iterator

下面通过创建一个迭代器对象来说明:
创建一个Reverse对象,将序列中的对象进行翻转。

class Reverse(object):
    def __init__(self, data):
        self.data = data
        self.index = len(data)

    def __iter__(self):
        return self

    def __next__(self):
        if self.index == 0:
            raise StopIteration
        self.index -= 1
        return self.data[self.index]

rev = Reverse([1,2,3,4,5])
for x in rev:
    print(x)

得到结果:

5
4
3
2
1

在进行for循环时,首先调用iter()方法,得到一个迭代器对象,然后调用该迭代器对象的next()方法,每次返回一个值。

——————————————————————————

创建迭代器的三种方式:

1、定义一个容器,并添加iter()和next()方法(python 2中为next()方法);iter()返回迭代器对象本身,next()返回每次调用 next() 或迭代时的元素;

2、通过iter()将可迭代对象转换为迭代器;

3、生成器。生成器通过yield语句快速生成迭代器,省略了复杂的iter()和next()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值