⚡️ Задача



Инструкция yield позволяет создавать генераторы.



Инструкция yield позволяет создавать генераторы.

В отличие от объявления return в функции, где возвращается один объект, yield при каждом вызове функции генерирует новый объект.



Фактически это дает возможность использовать генераторы в циклах.

Самая важная причина применения такой инструкции - экономия памяти, когда не требуется сохранять всю последовательность, а можно получать ее элементы по одному.



Ученик написал генератор show_letters(some_str), выводящий все символы строки на печать, но только в том случае, если они являются буквами (остальные игнорируются).

Сократите код функции.



Код

---

def show_letters(some_str):

clean_str = ''.join([letter for letter in some_str if letter.isalpha()])

for symbol in clean_str:

yield symbol



Конструкция yield from позволяет полностью убрать цикл из функции. Она "вкладывает" один генератор внутрь другого, что дает возможность управления несколькими генераторами.



Решение - IDE



def show_letters(some_str):

yield from ''.join([letter for letter in some_str if letter.isalpha()])





random_str = show_letters('A!sdf 09 _ w')

print(next(random_str))

print(next(random_str))




Результат выполнения



A

s




@python_job_interview