В предыдущем уроке мы подробно изучили списки — одну из самых популярных структур данных в Python. Списки отлично подходят для хранения упорядоченных коллекций, которые могут изменяться: добавлять новые элементы, удалять существующие, сортировать. Однако в программировании существуют ситуации, когда список не подходит или его использование неоптимально. Представьте, что вам нужно хранить координаты точки на плоскости (x, y). Эти значения не должны меняться после создания — точка не может иметь координаты, которые кто-то случайно изменит. Или представьте, что вы анализируете список посетителей сайта за неделю, и вам нужно узнать, сколько уникальных пользователей заходило. Вам не нужно, чтобы один и тот же пользователь учитывался несколько раз. Для таких задач в Python есть кортежи (tuple) и множества (set).
В этом уроке мы подробно разберем кортежи — неизменяемые упорядоченные коллекции. Вы узнаете, как создавать кортежи с помощью круглых скобок, почему кортеж с одним элементом требует запятой, и как преобразовывать другие коллекции в кортежи. Мы изучим методы кортежей: count для подсчета количества вхождений элемента и index для поиска индекса первого вхождения. Научимся использовать индексацию и срезы, которые работают так же, как в списках, и освоим распаковку кортежей — удобный способ присвоить элементы кортежа отдельным переменным. Вы поймете, почему неизменяемость кортежей — это не ограничение, а преимущество: кортежи занимают меньше памяти, защищают данные от случайных изменений и могут использоваться в качестве ключей словаря (в отличие от списков).
Затем мы перейдем к множествам — неупорядоченным коллекциям уникальных элементов. Множества незаменимы, когда вам нужно быстро проверить наличие элемента, удалить дубликаты из списка или выполнить математические операции над наборами данных. Мы научимся создавать множества с помощью фигурных скобок и функции set(), разберем важное различие: пустые фигурные скобки создают словарь, а не множество. Изучим основные методы множеств: add для добавления элементов, remove и discard для удаления (с разницей в обработке отсутствующих элементов), pop для удаления произвольного элемента. Особое внимание уделим операциям над множествами: объединение (union), пересечение (intersection), разность (difference) и симметрическая разность (symmetric_difference), а также их краткой записи с помощью операторов |, &, -, ^. Вы узнаете, как проверить, является ли одно множество подмножеством или надмножеством другого.
Познакомимся с frozenset — неизменяемой версией множества, которая может использоваться в качестве ключа словаря и храниться внутри других множеств. В завершение урока мы сравним все четыре типа коллекций: списки, кортежи, множества и frozenset, разберем их сильные и слабые стороны, и научимся принимать осознанные решения о выборе структуры данных в зависимости от задачи.
Все примеры в уроке будут практическими: обработка уникальных посетителей сайта, работа с координатами точек, сравнение наборов прав доступа пользователей, удаление дубликатов из списков и многое другое. К концу урока вы будете уверенно работать с кортежами и множествами и понимать, какую структуру данных выбрать в каждой конкретной ситуации.