Python 实现跳过数字 9 的迭代器
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
代码解析
SkipNineIterator类: 定义了一个名为SkipNineIterator的类,该类实现了迭代器协议。__init__方法: 初始化迭代器,设置迭代的终止值n和当前值current。__iter__方法: 返回迭代器本身,以便在for循环中使用。__next__方法: 实现迭代器的核心逻辑。它首先检查当前值是否小于等于终止值n。如果当前值不包含数字 '9',则返回当前值,并将其加 1。否则,直接将当前值加 1,继续循环。如果当前值超过了终止值n,则抛出StopIteration异常,表示迭代结束。
总结
通过使用 Python 的迭代器协议,我们可以轻松实现一个跳过数字 9 的迭代器,为我们提供一个高效的生成满足条件的整数序列的方式。
原文地址: https://www.cveoy.top/t/topic/mXBr 著作权归作者所有。请勿转载和采集!