创建一个反转迭代器的函数

时间:2015-11-01 18:17:16

标签: python object iterator iteration

我这样做是为了更好地理解iter()next()方法。

所以我理解这可以使用一些内置函数轻松完成:

>>>animal = 'cat'
>>>print(list(reversed(animal)))
['t','a','c']

但这也可以创建一个可迭代的类:

class Reverselist():
    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 =self.index -1
        return self.data[self.index]

    def intolist(self):
        self.test = [i for i in self]
        return self.test

rev = Reverselist('cat')
print(rev.intolist())

['t','a','c']

然而,我在做同样的事情时遇到了一些麻烦,但是使用功能而不是走OOO路线。

有没有办法使用iter()next()方法执行此功能,而无需求助于理解和循环?

1 个答案:

答案 0 :(得分:1)

您可以使用generator function

执行此操作
def reverse_list(seq):
    for index in range(len(seq)-1, -1, -1):
        yield seq[index]

调用此函数将生成一个"生成器对象"支持iter()next()

>>> rev = reverse_list('cat')
>>> rev
<generator object reverse_list at 0x10a93ebe0>
>>> next(rev)
't'