ГЛАВА 10. ДОПОЛНИТЕЛЬНЫЕ ТИПЫ ДАННЫХ В PYTHON

10.1. Множества

Математическое образование разработчика языка Python наложило свой отпечаток на типы данных (классы), которые присутствуют в языке.

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

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

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

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

Рассмотрим способы создания множеств:

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

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

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

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

10.2. Кортежи

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

Некоторые операции над кортежами:

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

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

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

10.3. Словари

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

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

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

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

К словарям применим оператор in:

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

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

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