Discuss / Python / 疑惑,求解

疑惑,求解

Topic source

老师你好,在生成素数的例子中,为什么我把filter中的过滤函数以匿名函数的方式传入,得到的结果会不正确?!

def primes():
    yield 2
    it = _odd_iter() # 初始序列
    while True:
        n = next(it) # 返回序列的第一个数
        yield n
        it = filter(lambda x: x%n>0, it) # 这里改成匿名函数

输出全部是奇数,而不是素数

这里lambda中的n是闭包中的数据,在generator中闭包该怎么处理


  • 1

Reply