本文主要为大家详细介绍了python如何使用生成器实现可迭代对象,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。
案例分析:
实一个可迭代对象的类,它能迭代出给定范围内所有的素数:
pn = Number(1, 30)
for k in pn:
print(k)
结果为:2,3,5,7,11,13,17,19,23,29
如何解决这个问题?
将该类的__iter__方法实现成生成器函数,每次yield返回一个素数
#!/usr/bin/python3
class Number(object):
def __init__(self, start, end):
self.start = start
self.end = end
# 判断一个数字是否是素数
def get_num(self, k):
if k >= 2:
for i in range(2, k):
if k % i == 0:
return False
return True
def __iter__(self):
for k in range(self.start, self.end+1):
if self.get_num(k):
# 是素数yield出去
yield k
if __name__ == '__main__':
num = Number(2, 30)
for i in num:
print(i)
以上就是python实现用生成器实现可迭代对象的方法的详细内容,更多请关注php中文网其它相关文章!
本文原创发布php中文网,转载请注明出处,感谢您的尊重!