Я столкнулся с проблемой, когда изучал lambda
функции и filter
. Чтобы перечислить первые несколько простых чисел, я использовал filter
и два lambda
s.
def _odd_iter():
"""the odd sequence"""
n = 1
while True:
n += 2
yield n
def _not_divisible(n):
"""get a filter lambda function"""
return lambda x: x % n > 0
def primes():
"""get the primes sequence"""
yield 2
it = _odd_iter()
while True:
n = next(it)
yield n
it = filter(_not_divisible(n), it)
def failed_primes():
"""get the primes sequence, but failed"""
yield 2
it = _odd_iter()
while True:
n = next(it)
yield n
it = filter(lambda x: x % n > 0, it)
for i in primes():
if i > 100:
break
print(i)
print()
for i in failed_primes():
if i > 100:
break;
print(i)
. В failed_primes
я использую lambda
в функции filter
для нечетной последовательности, но это не удалось. Я думаю, что простые числа оказались такими же, как failed_primes
. Я не знаю, почему есть разница.