運(yùn)行環(huán)境:2.7.14
構(gòu)造一個(gè)類(lèi)來(lái)輸出固定次數(shù)的字符
類(lèi)來(lái)實(shí)現(xiàn)迭代器的重點(diǎn)是:
- 有個(gè)
__iter__(self)實(shí)例方法,返回實(shí)例本身即可 - 有個(gè)
next(self)實(shí)例方法,返回值 - python3是用的
__next__(self),python2用的是next(self),注意選擇
# -*- coding: utf-8 -*-
'用類(lèi)實(shí)現(xiàn)一個(gè)迭代器'
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
通過(guò)yield來(lái)做個(gè)生成器實(shí)現(xiàn)迭代器
# -*- coding: utf-8 -*-
'結(jié)合yield做一個(gè)生成器,實(shí)現(xiàn)一個(gè)迭代器'
def gen(value, max_count):
for _ in range(max_count):
yield value
for _ in gen('hello', 3):
print _
福利:做個(gè)斐波那契數(shù)列,輸出數(shù)列中10以內(nèi)的數(shù)字吧
# -*- coding: utf-8 -*-
'一個(gè)斐波那契的生成器'
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