运行环境:2.7.14
构造一个类来输出固定次数的字符
类来实现迭代器的重点是:
- 有个
__iter__(self)
实例方法,返回实例本身即可 - 有个
next(self)
实例方法,返回值 - python3是用的
__next__(self)
,python2用的是next(self)
,注意选择
# -*- coding: utf-8 -*-
'用类实现一个迭代器'
class Iter(object):
def __init__(self, value, max_count):
self.value = value
self.max_count = max_count
self.count = 0
def __iter__(self):
return self
def __next__(self):
if self.count >= self.max_count:
raise StopIteration
self.count += 1
return self.value
# 兼容python2系列
def next(self):
return self.__next__()
iteration = Iter('hello', 3)
for i in iteration:
print i
通过yield来做个生成器实现迭代器
# -*- coding: utf-8 -*-
'结合yield做一个生成器,实现一个迭代器'
def gen(value, max_count):
for _ in range(max_count):
yield value
for _ in gen('hello', 3):
print _
福利:做个斐波那契数列,输出数列中10以内的数字吧
# -*- coding: utf-8 -*-
'一个斐波那契的生成器'
def generat_fib():
a, b = 0, 1
while True:
yield a
a, b = b, a+b
a = generat_fib()
for i in a:
if i > 10:
break
print i