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 :