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

dyao

我这样做是为了更好地理解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()方法使用函数而不必求助于理解和循环?

奥古尔

您可以使用生成器函数执行此操作

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'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

创建一个蛮力迭代器

如何创建一个调用成员函数的类似 stl 的迭代器

创建一个lambda函数以同时迭代集合

如何创建一个带有迭代器的结构?

创建一个惰性哈希迭代器

如何编写一个带迭代器的Rust函数?

创建一个函数来迭代列并在 R 中每次迭代创建一个新列

创建一个反向虚拟变量

Rust函数需要一个迭代器,并返回带有变异项的迭代器?

是否可以在 Lua 中创建一个可以迭代字典的迭代器?

用计时器 php 创建一个函数

创建一个函数以输出3个变量的所有迭代

在自定义反向矢量迭代器中,看不到第一个元素

创建一个对象阵列的迭代而

在r中迭代一个函数

在Ranges-v3中,如何从一对迭代器创建一个范围?

实现一个QAbstractItemModel迭代器

方案:迭代器函数一次仅返回一个值

如何创建一个迭代器,该迭代器生成由Rust中的索引列表指定的集合元素?

接受迭代器并返回迭代器中第一个可被 2 整除的元素的函数

用 Observable 包裹一个函数来创建一个热监听器

我如何创建一个HashMap在lambda函数内部进行迭代?

创建一个函数来迭代R中大列表中的小标题元素

forEach和map函数迭代对象的嵌套json数组并创建一个新数组

什么是反向函数返回的“迭代器对象”?

创建一个C ++宏,可以轻松创建虚函数包装器函数

如何创建一个带有迭代器的 Rust 结构?

每次遍历列表时创建一个新的迭代器对象

C ++如何在结构向量的一个字段上创建迭代器