Python-генераторы для охотничьей охоты в санатории

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Представьте, что вы начинающий разработчик, который только что унаследовал старый, пустой санаторий, который выглядел бы как из страниц ужасной сказки. С нетерпением вы решаете преобразовать его в современный технологический центр, но вскоре сталкиваетесь с неожиданными препятствиями — призрачным присутствием бывшего пациента, связанного с разваливающейся лестницей, который общается только в загадочных потоках данных. Ваша миссия — расшифровать эти потоки, понять причудливую последовательность и освободить дух.

Чтобы это сделать, вы должны овладеть тайной наукой о генераторах Python, мощной особенностью языка, которая позволит вам манипулировать бесконечными последовательностями данных, не боясь перегрузить память или потерять контроль перед хаотическим влиянием призрака. В этом лабораторном задании вы научитесь понимать и использовать генераторы для обработки последовательностей данных, предоставленных призрачным существом.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python/AdvancedTopicsGroup -.-> python/generators("Generators") subgraph Lab Skills python/generators -.-> lab-271558{{"Python-генераторы для охотничьей охоты в санатории"}} end

Начало работы с генераторами

В этом шаге мы начнем настройку нашего окружения и напишем простую функцию-генератор на Python. Это позволит нам получать данные от призрачного присутствия на лестнице по одному элементу за раз, не умирая от сумасшествия от полного потока данных.

Теперь в файле ~/project/spectrum_stream.py определите функцию-генератор под названием haunting_sequence, которая будет бесконечно генерировать числа в причудливой последовательности, определенной призраком:

## spectrum_stream.py

def haunting_sequence():
    num = 0
    while True:
        num += 1
        yield num ** 2 if num % 2 == 0 else -(num ** 2)

Этот генератор будет бесконечно генерировать квадраты чисел, но с особенностью: квадраты четных чисел будут положительными, а квадраты нечетных чисел будут отрицательными, словно дух находится в конфликте между двумя мирами.

Использование возможностей генератора

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

Расширьте файл spectrum_stream.py, потребляя генератор haunting_sequence. В целях этого лабораторного задания ограничьте вывод до первых 100 чисел в последовательности:

## spectrum_stream.py extended part

if __name__ == "__main__":
    sequence_generator = haunting_sequence()
    for _ in range(100):
        message_piece = next(sequence_generator)
        print(message_piece)

Запустите это из терминала, чтобы проверить числа и наблюдать за паттерном:

python ~/project/spectrum_stream.py

Вы должны увидеть последовательность чисел, чередующихся между положительными и отрицательными квадратами:

-1
4
-9
16
-25
36
-49
64
-81
100
-121
144
-169
196
-225
......
7056
-7225
7396
-7569
7744
-7921
8100
-8281
8464
-8649
8836
-9025
9216
-9409
9604
-9801
10000

Резюме

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

Взаимодействуя с концепцией генераторов и узнав, как их эффективно использовать, вы теперь можете более эффективно управлять большими или даже бесконечными последовательностями данных. Что наиболее важно, вы сделали первые шаги в破译ровании загадочного кода духа, тем самым приступив к преобразованию заброшенного санатория в технологическое убежище.

Этот навык поможет вам не только в решении сверхъестественных задач программирования, но и в написании более экономичных в использовании памяти и масштабируемых программ на Python в вашей карьере разработчика.