Theory and Tasks for Students - Spring 2019
Множества

Множество (Set) - неупорядоченная структура данных, содержащая уникальные элементы, они создаются следующим образом: a = {1, 2, 3, 1}; # {1, 2, 3} b = set([1, 2, 3]); Элементами множества могут быть только числа, строки и другие хэшируемые типы.

Очевидно, что множества поддерживают некоторое число "простых" операций: добавление одного элемента add(), добавление нескольких элементов update(), удаление элемента discard() и remove(), очистка clear(): a = set(); a.add(1); # {1} a.add([2, 3]); # Error a.update([2, 3]); # {1, 2, 3} a.discard(4); # {1, 2, 3} a.remove(4); # Error a.discard(3); # {1, 2} a.remove(2); # {1} a.clear(); # set() Обратите внимание на то, что при попытке удалить элемент, отсутствующий во множестве, при помощи функции remove() произойдёт ошибка, в отличие от remove().

Также множества поддерживают и математические операции: количество элементов len(), объединение union(), пересечение intersection(), вычитание difference(), проверки на вхождение одного множества в другое issubset() и issuperset() и другие: {1, 2, 3}.union({3, 4, 5}); # {1, 2, 3, 4, 5} {1, 2, 3}.intersection({3, 4, 5}); # {3} {1, 2, 3}.difference({3, 4, 5}); # {1, 2} len({1, 2, 3}); # 3 {1, 2, 3}.issubset({1, 2, 3, 4}); # True {1, 2, 3, 4}.issuperset({1, 2, 3}); # True

Пример применения множеств - составление словаря по тексту: # текст определён в переменной text text = text.lower() + " "; letters_set = set("abcdefghijklmnopqrstuvwxyz"); dictionary_set = set(); buffer = ""; for char in text : if (char in letters_set) : buffer += char; elif (len(buffer) > 0) : dictionary.add(buffer); buffer = "";