Python 实现跳过数字 9 的迭代器

本文将展示如何使用 Python 编写一个迭代器,它能够生成从 1 到 n 之间的整数,但会跳过所有包含数字 9 的整数。

代码实现

class SkipNineIterator:
    def __init__(self, n):
        self.n = n
        self.current = 1

    def __iter__(self):
        return self

    def __next__(self):
        while self.current <= self.n:
            if '9' not in str(self.current):
                result = self.current
                self.current += 1
                return result
            else:
                self.current += 1
        else:
            raise StopIteration()

使用方法

for i in SkipNineIterator(20):
    print(i)

输出结果

1
2
3
4
5
6
7
8
10
11
12
13
14
15
16
17
18
20

代码解析

  1. SkipNineIterator 类: 定义了一个名为 SkipNineIterator 的类,该类实现了迭代器协议。
  2. __init__ 方法: 初始化迭代器,设置迭代的终止值 n 和当前值 current
  3. __iter__ 方法: 返回迭代器本身,以便在 for 循环中使用。
  4. __next__ 方法: 实现迭代器的核心逻辑。它首先检查当前值是否小于等于终止值 n。如果当前值不包含数字 '9',则返回当前值,并将其加 1。否则,直接将当前值加 1,继续循环。如果当前值超过了终止值 n,则抛出 StopIteration 异常,表示迭代结束。

总结

通过使用 Python 的迭代器协议,我们可以轻松实现一个跳过数字 9 的迭代器,为我们提供一个高效的生成满足条件的整数序列的方式。

Python 实现跳过数字 9 的迭代器

原文地址: https://www.cveoy.top/t/topic/mXBr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录