На этом шаге мы перечислим эти методы.
Для работы с множествами предназначены следующие методы:
>>> s = set([1, 2, 3]) >>> с = s; s is c #C помощью = копию создать нельзя! True >>> c = s.copy() # Создаем копию объекта >>> c {1, 2, 3} >>> s is c # Теперь это разные объекты False
>>> s = set([1, 2, 3]) >>> s.add(4); s {1, 2, 3, 4}
>>> s = set([1, 2, 3]) >>> s.remove(3); s # Элемент существует {1, 2} >>> s.remove(5) # Элемент НЕ существует Traceback (most recent call last); File "<pyshell#78>", line 1, in <module> s.remove(5) # Элемент НЕ существует KeyError: 5
>>> s = set([1, 2, 3]) >>> s.discard(3); s # Элемент существует {1, 2} >>> s.discard(5) # Элемент НЕ существует {1, 2}
>>> s = set([1, 2]) >>> s.pop(), s (1, {2}) >>> s.pop(), s (2, set()) >>> s.pop() # Если нет элементов, то будет ошибка Traceback (most recent call last): File "<pyshell#89>", line 1, in <module> s.pop() # Если нет элементов, то будет ошибка KeyError: 'pop from an empty set'
>>> s = set([1, 2, 3]) >>> s.clear(); s set()
Помимо генераторов списков и генераторов словарей, язык Python 3 поддерживает генераторы множеств. Синтаксис генераторов множеств похож на синтаксис генераторов списков, но выражение заключается в фигурные скобки, а не в квадратные. Так как результатом является множество, все повторяющиеся элементы будут удалены. Пример:
>>> {х for х in [1, 2, 1, 2, 1, 2, 3]} {1, 2, 3}
Генераторы множеств могут иметь сложную структуру. Например, состоять из нескольких вложенных циклов for и (или) содержать оператор ветвления if после цикла. Создадим из элементов исходного списка множество, содержащее только уникальные элементы с четными значениями:
>>> {x for x in [1, 2, 1, 2, 1, 2, 3] if x % 2 == 0} {2}
Язык Python поддерживает еще один тип множеств - frozenset. В отличие от типа set, множество типа frozenset нельзя изменить. Объявить множество можно с помощью функции frozenset():
>>> f = frozenset()
>>> f
frozenset()
>>> f = frozenset("string") # Преобразуем строку >>> f frozenset({'n', 's', 'r', 'g', 't', 'i'}) >>> f = frozenset([1, 2, 3, 4, 4]) # Преобразуем список >>> f frozenset({1, 2, 3, 4}) >>> f = frozenset((1, 2, 3, 4, 4)) # Преобразуем кортеж >>> f frozenset({1, 2, 3, 4})
Множества frozenset поддерживают операторы, которые не изменяют само множество, а также следующие методы: сору(), difference(), intersection(), issubset(), issuperset(), symmetric_difference() и union().
На следующем шаге мы рассмотрим диапазоны.