#利用生成器生成一个可迭代对象
#需求:生成可迭代对象,输出指定范围内的素数,利用生成器产生一个可迭代对象
#生成器:本身是可迭代的,只是 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 :