python基础一 ------利用生成器生成一个可迭代对象

#利用生成器生成一个可迭代对象
#需求:生成可迭代对象,输出指定范围内的素数,利用生成器产生一个可迭代对象
#生成器:本身是可迭代的,只是 yield 好比return返回,yield返回后函数冻结状态,当再次调用时从冻结状态开始

 

 1 class PrintNumbers(object):
 2     """docstring for PrintNumbers"""
 3     def __init__(self, start,end):
 4         self.start = start
 5         self.end = end
 6     def isPrimeNum(self,num):
 7         if num==2:
 8             return False
 9         for i in range(2,num):
10             if num%i == 0:
11                 return False
12         return True
13     def __iter__(self):
14         for  i in range(self.start,self.end+1):
15             if self.isPrimeNum(i):
16                 yield i
17 
18 p = PrintNumbers(1,100)
19 for i in p:
20     print(i)

 对迭代器进行切片操作,跟列表类似,返回的依旧是可迭代类型的

 1 print("-------------对迭代器进行切片------------")
 2 #如何对迭代器进行切片操作
 3 from itertools import islice
 4 #返回的依旧是一个迭代器,需要迭代
 5 '''
 6 islice(iterable,stop)
 7 islice(iterable,start,stop[,step=1]) -> islice object
 8 
 9 
10 '''
11 a = islice(p,1,3)
12 print(a)
13 for x in a :

 

posted @ 2017-05-13 10:04  若鸟  阅读(308)  评论(0编辑  收藏  举报