filter()
函数和map()
类似,filter()
也接收一个函数和一个序列。和map()
不同的是,filter()
把传入的函数依次作用于每个元素,然后根据返回值是True
还是False
决定保留还是丢弃该元素。
用filter函数生成素数
def _odd_iter():
n = 1
while True:
n = n + 2
yield n
def primes():
yield 2
it = _odd_iter()
while True:
n = next(it)
yield n
it = filter(lambda x: x % n != 0, it)
for n in primes():
if n < 1000:
print(n)
else:
break