10.1. Множества
Математическое образование разработчика языка Python наложило свой отпечаток на типы данных (классы), которые присутствуют в языке.
Рассмотрим множество (set) в Python – неупорядоченную коллекцию неизменяемых, уникальных элементов. Создадим множество:

Заметим, что полученное множество отобразилось не в том порядке, в каком мы его создавали, т.к. множество – это неупорядоченная коллекция. Представим множество схематично:

Множества в Python обладают интересными свойствами:

Видим, что повторяющиеся элементы, которые мы добавили при создании множества, были удалены (элементы множества уникальны).
Рассмотрим способы создания множеств:

Множества можно создавать на основе списков. Обратите внимание, что в момент создания множества из списка будут удалены повторяющиеся элементы. Это отличный способ очистить список от повторов:

Функция range позволяет создавать множества из диапазона:

Рассмотрим некоторые операции над множествами:

У множеств в Python много общего с множествами из математики:


10.2. Кортежи
Следующий тип данных (класс), который также уходит своими корнями в математику – кортеж (tuple). Кортеж условно можно назвать неизменяемым «списком», т.к. к нему применимы многие списковые функции, кроме изменения. Кортежи используются, когда мы хотим быть уверены, что элементы структуры данных не будут изменены в процессе работы программы. Вспомните проблему с псевдонимами у списков.
Некоторые операции над кортежами:

С помощью кортежей можно присваивать значения одновременно двум переменным:

Поменять местами содержимое двух переменных:

Мы сказали, что кортеж нельзя изменить, но можно изменить, например, список, входящий в кортеж:

10.3. Словари
Следующий тип данных (класс) – словарь (dict). Словарь в Python – неупорядоченная изменяемая коллекция или, проще говоря, «список» с произвольными ключами, неизменяемого типа.
Пример создания словаря, который каждому слову на английском языка будет ставить в соответствие слово на испанском языке.


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

Результирующий словарь eng2sp отобразился в «перемешанном» виде, т.к. по аналогии с множествами, словари являются неупорядоченной коллекцией.
К словарям применим оператор in:

Часто словари используются, если требуется найти частоту встречаемости элементов в последовательности (списке, строке, кортеже ).
Функция, которая возвращает словарь, содержащий статистику встречаемости элементов в последовательности:

Результат вызова функции histogram для списка, строки, кортежа соответственно:
