Введение в Python. Часть 7. Кортежи и множества
Как работать с кортежами (tuples) и множествами (sets) в Python и чем они отличаются от списков
Вы уже знаете, что такое списки в Питоне и как с ними можно работать (если еще нет — вот урок по спискам). Помимо списков в Питоне есть еще такие структуры данных, как кортежи и множества.
В видео при создании словаря пропущена функция dict(). Приносим извинение за ошибку!
Кортежи (Tuples)
Кортеж похож на список, но у них есть принципиальное различие: список — изменяемый тип данных, а кортеж нет. В этом различии кроется суть кортежей: они защищают данные от непреднамеренных изменений. Вторая причина, по которой используют кортежи, это экономия места. Они занимают меньше объема в памяти, чем списки.
Вспомним, как в уроке по спискам вы удаляли один элемент:
Cоздаем с аналогичным содержанием кортеж. Делаем это с помощью круглых скобок, а не квадратных, как в списке (для создания пустого кортежа тоже используются круглые скобки). Пытаемся так же удалить тройку и получаем ошибку.
Что тогда вообще можно делать с кортежами, если они не изменяемы?
Можно обращаться к элементам кортежа по индексу, так же как в списках. Делать срезы. Считать количество элементов с определенным значением.
И можем еще просто удалить кортеж целиком:
По сути если у вас большой массив данных, который вам надо изучить, но не нужно там ничего менять, то логично использовать кортежи, а не списки. Это сэкономит память и ускорит работу, так как кортежи работают быстрее списков.
Еще одна важная функция кортежей: их можно использовать как ключи словаря. Ведь ключи словаря должны быть неизменяемыми. Словари мы проходили как раз на предыдущем уроке. Сегодня узнаем, как еще можно быстро создать словарь.
Давайте создадим словарь с примерным автопарком Владимира Путина: это его личные автомобили из декларации и еще те, на которых он ездит.
Так как мы удалили предыдущий словарь, можем создать новый с таким же названием. Создаем список с автомобилями. И «сшиваем» с помощью функции-молнии — zip() — кортеж и список в словарь (можно было так соединить и два списка):
Словарь готов! Запомните эту функцию-молнию, она очень полезная.
Множества (Sets)
Множества — это неупорядоченный список, то есть элементы внутри него располагаются в случайном порядке. Как списки и словари, множество относится к изменяемым типам данных. Но при этом невозможен поиск по индексу, так как элементы в случайном порядке. Зато множества дают высокую скорость поиска по ним. Например, это удобно, когда порядок вам не важен, а нужно просто быстро искать нужные элементы.
Создать пустое множество можно с помощью функции set(). А если с элементами, то с помощью их перечисления в фигурных скобках, как у словаря:
Все элементы множества всегда уникальные. Это полезное свойство множеств пригождается, когда вам нужно почистить ваш список и убрать дубли:
Получаем множество с уникальными элементами. Вернем его обратно в список с помощью функции list():
С множествами можно делать множество операций (избитая фраза, но все равно самая точная).
От самых простых таких, как добавление элемента и удаления:
Проверки наличия элемента в множестве:
До более сложных. Например, можно посмотреть пересечения множеств: то есть какие элементы входят в оба множества с помощью функции intersection():
Можем объединить два множества и получить третье, в котором останутся только уникальные элементы, использовав union():
А с помощью функции difference() узнаем разницy множеств: set1.difference(set2) даст нам ответ, какие элементы первого множества отсутствуют во втором множестве.
Если же хотим симметричную разницу между множествами: то есть все элементы, которые у них различны, а не общие. Применяем функцию symmetric_difference():
Все операции, доступные для множеств, можно посмотреть здесь.
Закончим на множестве, которое не изменяется, как и кортеж. Это frozenset. Преобразовываем свое множество во frozenset. И все: из него уже нельзя ничего удалить.
Тетрадка Jupyter Notebook с этого урока доступна на нашем GitHub.