Как «for» оценивается как true или false в функции all ()? - PullRequest
0 голосов
/ 21 апреля 2020

Я работаю через проект Эйлера и дошел до проблемы # 7 . Я разработал решение с помощью видео, которое я нашел в Интернете, но есть одна строка кода, которую я не понимаю. Вот проблема и мое решение.

"""By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13.
What is the 10 001st prime number?"""

primes = []
x = 2

while(len(primes)) < 10001:
    if all(x % prime for prime in primes):
        primes.append(x)
    x += 1

print(primes[-1])

Я запутался в функции all (). Я знаю, что x % prime будет иметь значение true, если остаток не равен нулю, но что именно делает функция с оператором for? Заранее спасибо!

1 Ответ

0 голосов
/ 21 апреля 2020

Функция использует понимание списка . Он берет каждое из чисел из массива primes и определяет их как prime. Затем он использует это для оценки x % prime.

Помещенный в a для l oop x % prime for prime in primes будет выглядеть так:

for prime in primes:
    return x % prime

Далее all() проверяет, все ли они приравнивать правду (или правду). Таким образом, если один из возвратов из for l oop, упомянутых выше, равен false, весь оператор if возвращает false.

...