======sets (множества)====== Множества — неупорядоченные наборы уникальных объектов, поддерживающих хеширование. Множества могут быть изменяемыми и неизменяемыми. Размерность и состав созданного однажды неизменяемого множества не может меняться, вместо этого обычно создаётся новое множество. Множества обычно используются для проверки вхождения элемента, устранения из последовательности дубликатов, и таких математических операций как: пересечение, объединение, разница и симметичная разница. Множества не упорядочены, они не хранят ни позицию элемента, ни порядок вставки. Поэтому наборы не поддерживают ни обращение к элементам по индексам, ни срезы, ни какое-либо другое поведение, присущее [[python:списки:списки|последовательностям]]. В двоичных операций, где участуют сразу и множество и статичное множество, результатом будет тип первого операнда. Например, в my = frozenset('ab') | set('bc') my будет статичным множеством. ====Инициалзация множества==== s = {'apple', 'orange', 'pear', 'banana'} print(s, type(s)) # {'pear', 'apple', 'banana', 'orange'} s = set('apple') print(s) # {'a', 'l', 'e', 'p'} - Выкидывает повторяющиеся объекты ==числа при формирования множества== числа при формирования множества сортируются по возростанию s = {i for i in range(1, 10)} print(s) # {1, 2, 3, 4, 5, 6, 7, 8, 9} ==Пустое множество== s = {} print(s, type(s)) #{} , создается не множество а словарь s = set()# Правильно использовать конструктор set print(s, type(s)) # set() ====Проход по элементам==== Проход по элементам последовательности производится при помощи for in: for item in {1, 2, 'some'}: print(item) ====Количество элементов==== Количество элементов в последовательности можно получить, используя функцию len(). len({1, 2, 'some'}) # 3 ====Сравнение==== Два множества **равны** тогда и только тогда, когда каждый из элементов множества содержится во втором (когда каждое из множест является подмножеством другого). Одно множество **меньше** другого тогда и только тогда, если первое является правильным подмножеством последнего (является подмножеством, но не равно). Одно множество **больше** другого тогда и только тогда, когда первое является правильным надмножеством последнего (является надмножеством, но не равно). Два любых непустых непересекающихся множества не являются равными и не являются подмножествами друг для друга, поэтому следующию сравнения вернут False: a == b, a > b, a < b. Множества не реализуют метод __cmp__(). Ввиду того, что множества реализуют частичное упорядочивание (отношения подмножеств), результат метода list.sort() для списка множеств не определён.