Python включает в стандартные типы данных тип множества. Множества - это неупорядоченная коллекция без повторяющихся элементов. Основные виды использования множеств включают вхождение/наличие элемента и устранение дубликатов записей. Объекты множества также поддерживают математические операции, такие как объединение, пересечение, разница и симметричное разница.
Фигурные скобки '{}'
или функцию set() можно использовать для создания наборов.
Примечание: для создания пустого множества вы должны использовать встроенный класс set()
, а не '{}'
. Фигурные скобки создают пустой словарь.
Краткая демонстрация использования множеств:
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'} #дубликаты были удалены >>> print(basket) {'orange', 'banana', 'pear', 'apple'} # вхождение/наличие элемента >>> 'orange' in basket True >>> 'crabgrass' in basket False >>> a = set('abracadabra') >>> b = set('alacazam') # уникальные символы >>> a {'a', 'r', 'b', 'c', 'd'} >>> b {'l', 'z', 'c', 'a', 'm'} # объединение >>> a | b {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'} # пересечение >>> a & b {'a', 'c'} # разность >>> a - b {'r', 'd', 'b'} # симметричная разница >>> a ^ b {'r', 'd', 'b', 'm', 'z', 'l'}
Кроме того, для создания множеств из произвольных значений можно использовать множества-выражения.
set
Для сортировки множества set
необходимо установить сторонний модуль pip install sortedcontainers
(желательно в виртуальное окружение)
>>> from sortedcontainers import SortedSet >>> ss = SortedSet('abracadabra') >>> ss # SortedSet(['a', 'b', 'c', 'd', 'r']) >>> ss.bisect_left('c') # 2
Эта операция выполняются быстрее линейного времени и потребляет на 66% меньше накладных расходов.
Так-же дополнительно смотрите:
set()
.frozenset()
.Для создания множеств из произвольных значений можно использовать выражения-множества или как их ошибочно называют генераторы множеств.