В мире разработки программного обеспечения владение искусством манипуляции с данными структурами имеет значение. Одной из таких универсальных структур является очередь, коллекция типа «первым пришел — первым ушел» (FIFO), которая незаменима во множестве программных сценариев. Python, благодаря своей богатой библиотеке и простоте синтаксиса, предоставляет отличную платформу для реализации пользовательских структур данных. Эта статья рассматривает создание итерируемой очереди на Python, включая мини-проект для закрепления вашего понимания.
Понимание очереди
Очередь работает на основе двух основных операций: добавление элемента в конец (enqueue) и удаление элемента из начала (dequeue). Этот механизм гарантирует, что первый добавленный элемент будет первым удаленным, что напоминает их в реальной жизни, например, в кассе магазина.

- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
- Где и как применять? Потестируем модель после установки на разных задачах
- Как дообучить модель под себя?
Реализация итерируемой очереди
Для создания итерируемой очереди на Python мы воспользуемся встроенным типом данных list для хранения элементов, инкапсулируя операции. Это упрощает управление элементами, но и делает нашу очередь итерируемой, позволяя ей беспрепятственно интегрироваться с циклами и выражениями Python.
Шаг 1: структура класса
Наш первый шаг — определение структуры класса и инициализация пустого списка для хранения элементов.
class IterableQueue: def __init__(self): self.items = []
Шаг 2: операции добавления и удаления элементов
Далее делаем методы добавления (enqueue) и удаления (dequeue) элементов. Метод append списка будет использоваться для добавления элементов, а pop(0) — для удаления, обеспечивая поведение FIFO.
def enqueue(self, item): self.items.append(item) def dequeue(self): if not self.is_empty(): return self.items.pop(0) return None
Шаг 3: проверка заполнения
Вспомогательный метод для проверки, пуста ли очередь, повысит удобство использования и предотвратит ошибки при операциях удаления.
def is_empty(self): return len(self.items) == 0
Шаг 4: создание итерируемой очереди
Чтобы сделать ее проходимой, делаем методы __iter__ и __next__. Метод __iter__ возвращает сам объект-итератор, а метод __next__ извлекает следующий элемент.
def __iter__(self): self.index = 0 return self def __next__(self): if self.index < len(self.items): result = self.items[self.index] self.index += 1 return result raise StopIteration
Мини-проект: планировщик задач
Чтобы продемонстрировать практическое использование техники, давайте разработаем простой планировщик задач. Задачи будут добавляться с пометкой и извлекаться для выполнения в порядке FIFO.
Определение задачи
Сначала мы определим базовую структуру задачи. Каждая задача будет иметь имя и простое выражение print для имитации выполнения задачи.
class Task:
def __init__(self, name):
self.name = name
def execute(self):
print(f"Executing {self.name}")
Планирование и выполнение задач
Мы инициализируем нашу IterableQueue, добавляем в нее несколько экземпляров Task и итерируем по очереди для выполнения каждой задачи.
if __name__ == "__main__":
task_queue = IterableQueue()
# Добавление задач
task_queue.enqueue(Task("Task 1"))
task_queue.enqueue(Task("Task 2"))
task_queue.enqueue(Task("Task 3"))
# Выполнение
for task in task_queue:
task.execute()
Заключение
Реализация итерируемой очереди на Python демонстрирует гибкость языка в создании пользовательских структур данных, адаптированных под конкретные требования. Это укрепляет фундаментальные программистские концепции, но и способствует глубокому пониманию объектно-ориентированных возможностей Python. Благодаря практическим приложениям, таким как мини-проект планировщика задач, учащиеся могут оценить реальную полезность структур данных.
- Освой Perplexity и узнай, как пользоваться функционалом остальных ИИ в одном
- УЧАСТВОВАТЬ ЗА 0 РУБ.
- Расскажем, как получить подписку (240$) бесплатно
- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ