您的位置:首页 > 编程语言 > Python开发

python中迭代器、生成器代码实现

2020-03-06 18:59 309 查看

迭代器

class Human(object):
def __init__(self):
self.names = list()
self.current = 0

def add(self, name):
self.names.append(name)

def __iter__(self):
return self

def __next__(self):
if self.current < len(self.names):
ret = self.names[self.current]
self.current += 1
return ret
else:
raise StopIteration

human = Human()
human.add("张三")
human.add("李四")
human.add("王五")

for name in human:
print(name)

生成器

def feibonaqi(num):

a, b = 0, 1
current_num = 0
while current_num < num:
yield a  # 函数中有yield,就变成了生成器对象
a, b = b, a+b
current_num += 1

obj = feibonaqi(10)

# for o in obj:
#     print(o)

# 对象调用魔法方法__next__便取出一值
print(obj.__next__())
print(obj.__next__())
print(obj.__next__())
print(obj.__next__())
print(obj.__next__())

# ret = next(obj)
# print(ret)
  • 点赞
  • 收藏
  • 分享
  • 文章举报
Mr_chenweida 发布了8 篇原创文章 · 获赞 1 · 访问量 132 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: