груды вещей. Каждый раз, когда вы хотите сгенерировать последовательность элементов, но не хотите «материализовать» их сразу в список. Например, у вас может быть простой генератор, который возвращает простые числа:
def primes():
primes_found = set()
primes_found.add(2)
yield 2
for i in itertools.count(1):
candidate = i * 2 + 1
if not all(candidate % prime for prime in primes_found):
primes_found.add(candidate)
yield candidate
Затем вы можете использовать это для генерации продуктов следующих простых чисел:
def prime_products():
primeiter = primes()
prev = primeiter.next()
for prime in primeiter:
yield prime * prev
prev = prime
Это довольно тривиальные примеры, но вы можете увидеть, как они могут быть полезны для обработки больших (потенциально бесконечных!) Наборов данных без их предварительной генерации, что является лишь одним из наиболее очевидных применений.