- Изучаем операции с множествами Python
- set python 3 или как создать множество?
- Как изменять множества в Python
- Множества в Python
- Что это
- Создание множеств Python
- Добавление элементов в множества Python
- Добавление одного элемента в множество Python
- Добавление нескольких элементов в множество Python
- Удаление элементов из множеств Python
- remove()
- discard()
- pop()
- Методы множеств Python
- Часто используемые функции множеств Python
- Функция принадлежности (членства)
- Разные функции
- Операции множеств в Python
- Объединение множеств
- Пересечение множеств
- Разность множеств
- Симметричная разность множеств
- Подмножество и надмножество в Python
- Бонус
- Выводы
Изучаем операции с множествами Python
Множество — это неупорядоченный набор элементов. Каждый элемент уникален (не имеет дубликатов) и должен быть неизменным (его нельзя изменить). Но само множество можно изменять: добавлять или удалять элементы из него.
set python 3 или как создать множество?
Множество создается размещением с помощью функции set(). При этом элементы экранируются фигурными скобками и разделяются запятыми.
Множество может содержать любое количество элементов. Они могут быть различных типов. Но множество не может содержать изменяемый элемент, такой как список или словарь.
# множество целых чисел my_set = print(my_set) # множество значений разных типов my_set = print(my_set)
# множество не содержит дубликатов # Вывод: my_set = print(my_set) # множество не может содержать изменяемых значений # здесь [3, 4] - это изменяемый список # Если вы раскомментируете строку #12, # это приведет к ошибке. # TypeError: unhashable type: 'list' #my_set = # мы можем создать множество из этого списка # Вывод: my_set = set([1,2,3,2]) print(my_set)
Создать пустое множество сложнее. Пустые фигурные скобки <> создадут пустой словарь Python. Чтобы создать множество без элементов, нужно вызвать функцию set() без аргументов.
# инициализируем a с помощью <> a = <> # проверяем тип данных a # Вывод: print(type(a)) # инициализируем a с помощью set() a = set() # проверяем тип данных a # Вывод: print(type(a))
Как изменять множества в Python
Множества могут быть изменены. Но элементы в них неупорядоченные, поэтому индексирование не имеет смысла.
Нельзя получить доступ или изменить элемент множества, используя для этого индексацию или срез. Множество их не поддерживает.
Можно добавить один элемент, используя метод add(), несколько — используя метод update(). Он может принимать в качестве аргумента кортежи, списки, строки или другие множества. Во всех случаях дубликаты невозможны.
# инициализируем my_set my_set = print(my_set) # если вы раскомментируете строку 9, # то получите ошибку # TypeError: 'set' object does not support indexing #my_set[0] # добавление элемента # Вывод: my_set.add(2) print(my_set) # добавление нескольких элементов # Вывод: my_set.update([2,3,4]) print(my_set) # добавление списка и множества # Вывод: my_set.update([4,5], ) print(my_set)
Результат работы программы:
Множества в Python
Множества (set) в Python — это встроенный тип, предлагающий широкий набор возможностей, которые повторяют теорию множеств из математики. Тем не менее интерпретация может отличаться от той, что принята в математике. Set импортировать не нужно. А в этом материале вы узнаете о нем все, что потребуется для работы.
Что это
Множества — это неупорядоченная коллекция уникальных элементов, сгруппированных под одним именем. Множество может быть неоднородным — включать элементы разных типов. Множество всегда состоит только из уникальных элементов (дубли запрещены) в отличие от списков и кортежей в Python. Объект set — это также коллекция уникальных хэшируемых объектов. Объект называется хэшируемым в том случае, если его значение хэша не меняется. Это используется в ключах словарей и элементах множеств, ведь значения хэшей применяются в их внутренних структурах.
Чаще всего множества в Python используются для проверки на принадлежность, удаления повторов из последовательности и выполнения математических операций, таких как пересечение, объединение, поиск разностей и симметрических разностей. Изображение ниже показывает два примера множеств (алфавит и цифры), каждый из которых включает уникальные неизменяемые объекты.
Создание множеств Python
Создать объект set в Python можно двумя путями:
Примечание: не используйте зарезервированные ключевые слова и названия встроенных классов в качестве имен для множеств. Это не поощряется в программировании на Python.
Множество создается при размещении всех элементов внутри фигурных скобок <> , как показано на примере ниже.
s1 = > # Это создаст пустое множество s2 = 1, 'pythonru', 20.67>
Еще один способ создать (или определить) множество Python — использовать функцию set() . Пример ниже.
s1 = set() # Это создаст пустое множество s2 = set(1, 'pythonru', 20.67>)
Первый способ (с использованием фигурных скобок <> ) определенно проще.
Нет ограничений на количество элементов в объекте set , но запрещено добавлять элементы изменяемых типов, такие как список или словарь. Если попробовать добавить список (с набором элементов), интерпретатор выдаст ошибку.
s5 = 1, 2, 3, [5, 6, 7, 8] > Traceback (most recent call last): File "", line 1, in module> TypeError: unhashable type: 'list'
Добавление элементов в множества Python
Объекты set в Python поддерживают добавление элементов двумя путями: по одному с помощью метода add() или группами с помощью update() . Оба описаны дальше.
Добавление одного элемента в множество Python
Один элемент можно добавить с помощью метода add() . Такой код выглядит следующим образом.
set1 = 1, 3, 4> set1.add(2) print(set1) 1, 2, 3, 4>
Добавление нескольких элементов в множество Python
Больше одного элемента можно добавить с помощью update() . Код следующий.
set2 = 1, 2, 3> set2.update([4, 5, 6]) print(set2) #
Удаление элементов из множеств Python
Один или несколько элементов можно удалить из объекта set с помощью следующих методов. Их отличие в виде возвращаемого значения.
remove()
Метод remove() полезен в тех случаях, когда нужно удалить из множества конкретный элемент и вернуть ошибку в том случае, если его нет в объекте.
Следующий код показывает метод remove() в действии.
set1 = 1, 2, 3, 4, 'a', 'p'> set1.remove(2) print(set1) 1, 3, 4, 'a', 'p'> set1.remove(5) # Error element not found
discard()
Метод discard() полезен, потому что он удаляет конкретный элемент и не возвращает ошибку, если тот не был найден во множестве.
set1 = 1, 3, 4, 'a', 'p'> set1.discard('a') print(set1) # set1.discard(6) print(set1) #
pop()
Метод pop() удаляет по одному элементу за раз в случайном порядке. Set — это неупорядоченная коллекция, поэтому pop() не требует аргументов (индексов в этом случае). Метод pop() можно воспринимать как неконтролируемый способ удаления элементов по одному из множеств в Python.
set1 = 1, 3, 4, “p”> set1.pop() 3 # случайный элемент будет удален (ваш результат может отличаться)
Методы множеств Python
У объектов set есть несколько встроенных методов. Увидеть их все можно с помощью команды dir() . dir(object) в Python показывает самые важные атрибуты разных типов объектов.
Вот что выдаст функция для объекта set в Python.
set1 = 1, 2, 3, 4> dir(set1) ['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
Часто используемые функции множеств Python
Из всех методов, перечисленных в dir() , только несколько из них используются постоянно. Вы уже знакомы с add , update , remove , pop и discard .
Вот на какие также стоит обратить внимание.
Функция принадлежности (членства)
Она проверяет на наличие конкретного элемента в множестве.
num_set = 1 ,3, 5, 7, 9, 10> 7 in num_set # True 2 in num_set # False 1 not in num_set # False
Разные функции
len(num_set) — вернет количество элементов в объекте set .
copy() — создает копию существующего множества и сохраняет ее в новом объекте.
clear() —очищает множество (удаляет все элементы за раз)
del — удаляет множество целиком
Дальше речь пойдет об операциях union , issubset , issuperset , difference_update и других.
Операции множеств в Python
В этом разделе вы узнаете о разных операциях над множествами, которые являются частью теории множеств.
Объединение множеств
При использовании на двух множествах вы получаете новый объект, содержащий элементы обоих (без повторов). Операция объединения в Python выполняется двумя способам: с помощью символа | или метода union() .
A = 1, 2, 3> B = 2, 3, 4, 5> C = A | B # используя символьный метод C = A.union(B) # используя метод union print(C) #
Пересечение множеств
При использовании на двух множествах вы получаете новый объект, содержащий общие элементы обоих (без повторов). Операция пересечения выполняется двумя способами: с помощью символа & или метода intersection() .
A = 1, 2, 3, 4> B = 3,4,5,6> C = A & B # используя символьный метод C = A.intersection(B) # используя метод intersection print(C) #
Разность множеств
При использовании на двух множествах вы получаете новый объект, содержащий элементы, которые есть в первом, но не втором (в данном случае — в множестве “A”). Операция разности выполняется двумя способами: с помощью символа — или метода difference() .
A = 1, 2, 3, 4> B = 3,4,5,6> C = A - B # используя символьный метод C = A.difference(B) # используя метод difference print(C) #
Симметричная разность множеств
При использовании на двух множествах вы получаете новый объект, содержащий все элементы, кроме тех, что есть в обоих. Симметрическая разность выполняется двумя способами: с помощью символа ^ или метода symmetric_difference() .
C = A ^ B # используя символьный метод C = A.symmetric_difference(B) # используя метод symmetric_difference print(C) #
Подмножество и надмножество в Python
Множество B ( SetB ) называется подмножество A ( SetA ), если все элементы SetB есть в SetA . Проверить на подмножество в Python можно двумя способами: с помощью символа или метода issubset() . Он возвращает True или False в зависимости от результата.
A = 1, 2, 3, 4, 5> B = 2,3,4> B A # используя символьный метод B.issubset(A) # используя метод issubset # True
Множество A ( SetA ) называется надмножество B ( SetB ), если все элементы SetB есть в SetA . Проверить на надмножество в Python можно двумя способами: с помощью символа >= или метода issuperset() . Он возвращает True или False в зависимости от результата.
A = 1, 2, 3, 4, 5> B = 2,3,4> A >= B # используя символьный метод A.issuperset(B) # используя метод issubset # True
Бонус
А теперь бонус для тех, кто дочитал до этого места. Многие начинающие программисты задаются вопросом, как удалить повторяющиеся элементы из списка?
Ответ: просто передайте список функции set() и все дубли будут удалены автоматически. Результат потом можно снова передать в функцию list() , чтобы он снова стал списком.
List1 = [1, 2, 3, 5, 3, 2, 4, 7] List_without_duplicate = set(List1) print(List_without_duplicate) # (1, 2, 3, 5, 4, 7) преобразован в множество back_to_list = list(List_without_duplicate) # [1, 2, 3, 5, 4, 7] снова преобразован в список
Выводы
Теперь вы знакомы с объектами set в Python и теорией множеств на практике. Знаете как создавать множества, менять их, добавляя или удаляя элементы. Вы также знаете, как использовать метод dir и другие методы для множеств в Python. Наконец, познакомились с операциями union , intersection , difference , symmetric difference , subset и superset .