Discuss / Python / 请教一下,为什么会出现死循环,而老师的形式就不会?

请教一下,为什么会出现死循环,而老师的形式就不会?

Topic source

我这么写:

#_coding:UTF-8_ def _not_divisible(n): return lambda x: x % n > 0 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(_not_divisible(n), it) r=[n for n in primes()if n<1000 else break] print(r) 会死循环。

而老师的这么写就不会: def _not_divisible(n): return lambda x: x % n > 0 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(_not_divisible(n), it) for n in primes(): if n < 1000: print(n) else: break

为什么呢,不理解。。。。。。。 请教大家解惑。

为什么我按照老师这样写,而结果只会出现2和3呢

r=[n for n in primes()if n<1000 else break] 你这句代码编译不过啊,是不能加else的吧

r=[n for n in primes()if n<1000] 如果你是指这样的话那就是因为产生了无穷长度的list,因为是先读primes()再判断,不会退出


  • 1

Reply