10.1. Множества
Математическое образование разработчика языка Python наложило свой отпечаток на типы данных (классы), которые присутствуют в языке.
Рассмотрим множество (set) в Python – неупорядоченную коллекцию неизменяемых, уникальных элементов. Создадим множество:
Заметим, что полученное множество отобразилось не в том порядке, в каком мы его создавали, т.к. множество – это неупорядоченная коллекция. Представим множество схематично:
Множества в Python обладают интересными свойствами:
Видим, что повторяющиеся элементы, которые мы добавили при создании множества, были удалены (элементы множества уникальны).
Рассмотрим способы создания множеств:
Множества можно создавать на основе списков. Обратите внимание, что в момент создания множества из списка будут удалены повторяющиеся элементы. Это отличный способ очистить список от повторов:
Функция range позволяет создавать множества из диапазона:
Рассмотрим некоторые операции над множествами:
У множеств в Python много общего с множествами из математики:
10.2. Кортежи
Следующий тип данных (класс), который также уходит своими корнями в математику – кортеж (tuple). Кортеж условно можно назвать неизменяемым «списком», т.к. к нему применимы многие списковые функции, кроме изменения. Кортежи используются, когда мы хотим быть уверены, что элементы структуры данных не будут изменены в процессе работы программы. Вспомните проблему с псевдонимами у списков.
Некоторые операции над кортежами:
С помощью кортежей можно присваивать значения одновременно двум переменным:
Поменять местами содержимое двух переменных:
Мы сказали, что кортеж нельзя изменить, но можно изменить, например, список, входящий в кортеж:
10.3. Словари
Следующий тип данных (класс) – словарь (dict). Словарь в Python – неупорядоченная изменяемая коллекция или, проще говоря, «список» с произвольными ключами, неизменяемого типа.
Пример создания словаря, который каждому слову на английском языка будет ставить в соответствие слово на испанском языке.
В качестве индексов словаря используются неизменяемые строки, могли бы воспользоваться кортежами, т.к. они тоже неизменяемые:
Результирующий словарь eng2sp отобразился в «перемешанном» виде, т.к. по аналогии с множествами, словари являются неупорядоченной коллекцией.
К словарям применим оператор in:
Часто словари используются, если требуется найти частоту встречаемости элементов в последовательности (списке, строке, кортеже ).
Функция, которая возвращает словарь, содержащий статистику встречаемости элементов в последовательности:
Результат вызова функции histogram для списка, строки, кортежа соответственно: