返回2-100范围内的所有质数
def iterator():
#创建一个生成器
#生成器性质:第一次调用next()返回2,之后每次调用返回下一个正整数
n=2
yield n
while True:
n=n+1
yield n
def _not_divisible(n):
#返回一个函数 function(m)
def function(m):
return m%n>0
return function
def iter_primes(n):
iter=iterator()#创建一个iterator生成器
x=[]
x.append(next(iter))#取出一个数给x
i=2
while i<=n:
def func(i):
return _not_divisible(i)
'''
给生成器添加一个过滤函数(加了后变成了filter),过滤掉整除x[-1]的元素
生成的新filter的指针位置和iter目前的指针位置相同
'''
iter=filter(func(x[-1]),iter)
m=next(iter)#取出下一个元素
if m<=n:#如果小于等于n
x.append(m)#添加x
else:
break
i=i+1
return x
print(iter_primes(100))
结果:
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]