#_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
星星的天空
我这么写:
#_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
为什么呢,不理解。。。。。。。 请教大家解惑。