лямбда-функция и последовательность простых чисел - PullRequest
0 голосов
/ 13 октября 2019

Я столкнулся с проблемой, когда изучал 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. Я не знаю, почему есть разница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...