Python Set Difference — A Complete Beginner Guide
In the last week’s article, you’ve learned in depth how Python set union() works. This week we’ll explore yet another set function, and that’s set difference() . With Python set difference, you can easily find the difference between two or more sets. In plain English, that means only the distinct values that are unique to the first set are returned.
You’ll get a much more in-depth understanding in this article, so continue reading.
Or don’t read at all — I’ve covered the topic in a video format:
Python Set Difference — The Basics
So, what is Python set difference? That’s what we’ll answer in this section. You’ll get a complete understanding of the definition, syntax, and return values through visual examples.
Definition and usage
Set difference function returns the element(s) of the first set that aren’t found in the second set. You can find the difference between multiple sets — the same logic applies. For simplicity’s sake, we’ll work with two in the examples below.
Take a look at the following two sets — A and B:

Image 1 — Two sets with programming languages (image by author)
Calculating a difference between these sets means we’ll get a new set with a single element — PHP. Why? Because it’s the only element of set A that isn’t found in set B:

Image 2 — Set difference in action (image by author)
Similarly, B — A would result in Ruby, as that element is specific to set B. Python set difference is oftentimes represented with a Venn diagram. Here’s what it looks like:

Image 3 — Set difference as a Venn diagram (image by author)
Elements Python and JavaScript (JS) are common to both sets. We only care about unique elements from the first set when calculating the set difference — that’s why only PHP is returned in the new set.
What does difference method do in Python and how do you find the difference in sets in Python? Let’s go over the syntax to answer that question.
Syntax
- set1 — The iterable to find difference from.
- set2 , set3 — Other sets use to “disqualify” elements from set1
Return value
The difference function returns a new set which is the difference between the first set and all other sets passed as arguments — but only if set(s) or iterable object(s) were passed to the function.
If no arguments were passed into the difference() function, a copy of the set is returned.
Python Set Difference Function Example
We’ll declare two sets, just as on Image 1:
- A : Contains Python, JavaScript, and PHP
- B : Contains Python, JavaScript, and Ruby
As you can see, the first two languages are present in both sets. Calculating the difference as A — B should return a new set with only PHP. Likewise, B — A returns a new set with only Ruby:
If you don’t specify any parameters to the difference function, a copy of the set is returned:
You can verify it was copied by printing the memory address:
You won’t see the identical values, and that’s not the point. The important thing is that they’re different, indicating the set was copied to a different memory address.
Let’s now explore a shorter way to get the set difference — by using the minus operator.
Python Set Difference Using The — Operator
You don’t have to call the difference() function every time. You can use the minus ( — ) operator instead:
Everything else remains the same. Just remember that both operands must be of type set.
Python Set Difference Common Errors
You’re likely to encounter errors when you first start working with sets. These are common, but usually easy to debug.
AttributeError: ’list’ object has no attribute ‘difference’
This is the most common type of error and it occurs when you try to call the set difference() function on the wrong data type. Only sets have access to this function.
Here’s an example — an exception is raised if you use lists:

Image 4 — No attribute error (image by author)
Make sure both are of type set and you’ll be good to go.
TypeError: unsupported operand type(s) for -: ‘set’ and ’list’
This error occurs when you try to use shorthand notation (minus sign) on invalid data types. Both must be sets for the minus sign to work. Here’s an example:

Image 5 — Unsupported operand types error (image by author)
As you can see, A is a set, and B is a list, so the minus sign doesn’t work.
Python Set Difference FAQ
We’ll now go over a couple of frequently asked questions (FAQ) regarding Python sets and Python set difference function.
What does Python set() do?
The set() method in Python is used to convert any iterable data type to an element with distinct elements — set.
Can sets have duplicates?
Sets are collections in which repetition and order are ignored — so no, sets can’t have duplicates.
Is the set difference operator in Python commutative?
Set difference is not commutative — A — B is not the same as B — A. Here’s an example:
Conclusion
Python set difference is utterly simple to understand. We went through the intuition and definition and built our way towards understanding more advanced usage and typical errors you’re bound to see at some point. You have to admit — it was easier than you expected.
I hope that this article has helped you develop a better understanding of the Python set union function. As always, if you have any questions or comments, please feel free to ask in the comment section below. Happy coding!
Как сравнить два множества в python

The difference between the two sets in Python is equal to the difference between the number of elements in two sets. The function difference() returns a set that is the difference between two sets. Let’s try to find out what will be the difference between two sets A and B. Then (set A – set B) will be the elements present in set A but not in B and (set B – set A) will be the elements present in set B but not in set A.
Let’s look at the Venn diagram of the following difference set function.
Syntax:
In this program, we will try to find out the difference between two sets set_A and set_B, both the way:
Сохраните в закладках эту статью, если вы новичок в Python (особенно если изучаете Python сами)
Привет, Хабр! Представляю вашему вниманию перевод статьи "Bookmark this if you are new to Python (especially if you self-learn Python)" в двух частях (1, 2) c простыми, но полезными советами и трюками в Python.

Если из-за скучной карантинной жизни вы решили погрузиться в Python, поздравляю. Вы столкнулись с самым быстрорастущим языком программирования. Я уверен, что вы уже знаете некоторые преимущества Python, такие как его простота, легкость в освоении и т.д. Это также основные причины, по которым я изучил Python пять лет назад. Я надеюсь, что вы сможете изучать Python более эффективно и наслаждаться этим процессом, и для этого я подготовил список простых, но полезных трюков и советов.
Уточнение: в настоящее время я использую Python 3.8. Если вы столкнулись с какими-либо проблемами во время запуска моих примеров, пожалуйста, проверьте, не связано ли это с вашей версией Python.
Содержание
Сравнение значений
Вы можете сравнить значения двух объектов. Результатом будет True или False . Вы можете использовать сравнение непосредственно в качестве условия в операторе if-else .
Множества в Python set() Примеры

Множества в Python – это структура данных, которые содержат неупорядоченные элементы. Элементы также не является индексированным. Как и список, множество позволяет внесение и удаление элементов. Однако, есть ряд особенных характеристик, которые определяют и отделяют множество от других структур данных:
- Множество не содержит дубликаты элементов;
- Элементы множества являются неизменными (их нельзя менять), однако само по себе множество является изменяемым, и его можно менять;
- Так как элементы не индексируются, множества не поддерживают никаких операций среза и индексирования.
В этой статье мы обсудим различные операции, которые можно применять на множествах в Python.
Содержание:
Создание множеств
Существует два пути, следуя которым, мы можем создавать множества в Python.
Есть вопросы по Python?
На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!
Telegram Чат & Канал
Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!
Паблик VK
Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!
Мы можем создать множество путем передачи всех элементов множества внутри фигурных скобок <> и разделить элементы при помощи запятых (,) . Множество может содержать любое количество элементов и элементы могут быть разных типов, к примеру, целые числа, строки, кортежи, и т. д. Однако, множество не поддерживает изменяемые элементы, такие как списки, словари, и так далее.
Рассмотрим пример создания множества в Python:
Только что мы создали множество чисел. Мы также можем создать множество из строк. Например:
Возможно вы обратили внимание на то, что элементы в выдаче выше находятся в другом порядке, отличном от того, как мы добавляли их в множество. Это связано с тем, что элементы множества находятся в произвольном порядке. Если вы запустите тот же код еще раз, возможно вы получите выдачу с элементами, которые каждый раз будут находиться в другом порядке.
Мы также можем создать множество с элементами разных типов. Например:
Все элементы в упомянутом выше множестве принадлежат разным типам.
Мы также можем создать множество из списков. Это можно сделать, вызвав встроенную функцию Python под названием set() . Например:
Как упоминалось ранее, множества не содержат дубликаты элементов. Предположим, наш список содержит дубликаты элементов, как показано ниже:
Множество удалило дубликаты и выдало только по одному экземпляру элементов. Это также происходит при создании множества с нуля. Например:
И снова, множество удалило дубликаты и вернуло только один из дублируемых объектов.
Создание пустого множества подразумевает определенную хитрость. Если вы используете пустые фигурные скобки <> в Python, вы скорее создадите пустой словарь, а не множество. Например:
Как показано в выдаче, тип переменной х является словарем.
Чтобы создать пустое множество в Python, мы должны использовать функцию set() без передачи какого-либо значения в параметрах, как показано ниже:
Выдача показывает, что мы создали множество.
Доступ к элементам множеств
Python не предоставляет прямой способ получения значения к отдельным элементам множества. Однако, мы можем использовать цикл для итерации через все элементы множества. Например:
Мы также можем проверить наличие элемента во множестве при помощи in , как показано ниже:
Код возвращает «True«, а это означает, что элемент был найден во множестве. Аналогичным образом, при поиске элемента, который отсутствует во множестве, мы получим «False«, как показано ниже:
Как и ожидалось, код вернул «False«.
Добавление элементов во множество
Python позволяет нам вносить новые элементы во множество при помощи функции add() . Например:
Элемент «Feb» успешно внесен во множество. Если это было множество чисел, мы не можем передать новый элемент внутри скобочек, как мы делаем это для строк. Например:
В следующем разделе мы обсудим, как удалять элементы из множеств.
Удаление элемента из множеств
Python позволяет нам удалять элемент из множества, но не используя индекс, так как множество элементов не индексированы. Элементы могут быть удалены при помощи обоих методов discard() и remove() .
Помните, что метод discard() не будет выдавать ошибку, если элемент не был найден во множестве. Однако, если метод remove() используется и элемент не был найден, возникнет ошибка.
Давайте продемонстрируем как удалять элемент при помощи метода discard() :
Элемент 3 был удален из множества.
Аналогично, метод remove() может использоваться следующим образом:
Теперь попробуем удалить элемент, которого нет во множестве. Сначала используем метод discard() :
Выдача выше показывает, что никакого воздействия на множество не было оказано. Теперь посмотрим, что выйдет из использования метода remove() по аналогичному сценарию:
Выдача показывает, что метод выдал ошибку KeyError, так как мы пытались удалить элемент, которого нет во множестве.
С методом pop() , мы можем удалить и вернуть элемент. Так как элементы находятся в произвольном порядке, мы не можем утверждать или предсказать, какой элемент будет удален.
Вы можете использовать тот же метод при удалении элемента и возврате элементов, которые остаются во множестве. Например:
Эти элементы остаются во множестве.
Метод Python под названием clear() поможет удалить все элементы во множестве. Например:
Результатом является пустой set() без каких-либо элементов внутри.
Объединение множеств
Предположим, у нас есть два множества, А и В. Объединение этих двух множеств — это множество со всеми элементами обеих множеств. Такая операция выполняется при помощи функции Python под названием union() .
Объединение может состоять из более чем двух множеств, и все их элементы сложатся в одно большое множество. Например:
При выполнении операции объединения, дубликаты игнорируются, так что только один из двух элементов дубликатов будет отображаться. Например:
Оператор | может также использоваться при поиске объединения двух или более множеств. Например:
Если вы хотите создать объединение из более двух множеств, разделите названия множеств при помощи оператора | . Взглянем на пример:
Пересечение множеств
Предположим, у вас есть два множества: А и В. Их пересечение представляет собой множество элементов, которые являются общими для А и для В.
Операция пересечения во множествах может быть достигнута как при помощи оператора & , так и метода intersection() . Рассмотрим пример:
В обеих множествах 3 является общим элементом. То же самое может быть достигнуто при использовании метода intersection() :
В следующем разделе мы обсудим, как определить разницу между множествами.
Разница между множествами
Предположим, у вас есть два множества: А и В. Разница между А и В (А — В) — это множество со всеми элементами, которые содержатся в А, но не в В. Соответственно, (В — А) — это множество со всеми элементами в В, но не в А.
Для определения разницы между множествами в Python, мы можем использовать как функцию difference(), так и оператор — . Рассмотрим пример:
В показанном выше скрипте, только первые три элемента множества set_a отсутствуют во множестве set_b , формируя нашу выдачу. Оператор минус — можно также применить для нахождения разницы между двумя множествами, как показано ниже:
Симметричная разница между множествами А и В — это множество с элементами, которые находятся в А и В, за исключением тех элементов, которые являются общими для обеих множеств. Это определяется использованием метода Python под названием symmetric_difference() , или оператора ^ . Посмотрим на пример:
Симметричную разницу можно также найти следующим образом:
Сравнение множеств
Мы можем сравнить множества в зависимости от того, какие элементы в них содержатся. Таким образом, мы можем сказать, является ли множество родительским, или дочерним от другого множества. Результат такого сравнения будет либо True , либо False .
Чтобы проверить, является ли множество А дочерним от В, мы можем выполнить следующую операцию:
Чтобы узнать является ли множество В дочерним от А, мы можем выполнить следующую операцию, соответственно:
Дочернее и родительское множество может также быть проверено при помощи методов issubset() и issuperset() , как показано ниже:
В следующем разделе мы обсудим некоторые из наиболее часто используемых методов для манипуляции множествами, предоставленных в Python, которые мы не успели упомянуть.
Методы множеств
Python содержит огромное количество встроенных методов, включая следующие:
Метод copy()
Этот метод возвращает копию множества. Например:
Выдача показывает, что х является копией множества string_set .
Метод isdisjoint()
Этот метод проверяет, является ли множество пересечением или нет. Если множества не содержат общих элементов, метод возвращает True , в противном случае — False . Например:
Оба множества не имеют общих элементов, что делает выдачу True .
Метод len()
Этот метод возвращает длину множества, которая является общим количеством элементов во множестве. Пример:
Выдача показывает, что длина множества является 4.
Frozenset в Python
Frozenset (замороженное множество) – это класс с характеристиками множества, однако, как только элементы становятся назначенными, их нельзя менять. Кортежи могут рассматриваться как неизменяемые списки, в то время как frozenset-ы — как неизменные множества.
Множества являются изменяемыми и нехешируемыми, это значит, что мы не можем использовать их как словарные ключи. Замороженные множества (frozenset) являются хешированными и могут использоваться в качестве ключей словаря.
Для создания замороженного множества, мы используем метод frozenset() . Давайте создадим два замороженных множества, Х и Y:
Замороженные множества поддерживают использование множественных методов Python, таких как copy() , difference() , symmetric_difference() , isdisjoint() , issubset() , intersection() , issuperset() и union() .
Вывод
Данная статья предоставляет подробное введение во множества языка программирования Python. Математическое определение множеств аналогично определению множеств в Python.
Множество — это набор элементов в произвольном порядке. Само по себе, множество является изменяемым, однако его элементы являются неизменяемыми.
Однако, мы можем добавлять и убирать элементы из множества без каких-либо проблем. В большей структур данных элементы являются индексированными. Однако, элементы множеств не являются индексированными. Это делает невозможным для нас выполнять операции, которые направлены на определенные элементы множества.

Являюсь администратором нескольких порталов по обучению языков программирования Python, Golang и Kotlin. В составе небольшой команды единомышленников, мы занимаемся популяризацией языков программирования на русскоязычную аудиторию. Большая часть статей была адаптирована нами на русский язык и распространяется бесплатно.