Python高阶函数之filter

@spiritree  September 18, 2016

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

添加新评论