Sets in Python – Differece, Symetric Difference, Union, Intersection
After writing the article scraping a web site up to the N-th level with Python, I have decided to summarize what could be achieved with Set() in this language. Pretty much, sets can be described as lists with a few differences:
Set == List
- Set is iterable
- Set is mutable+
- If the set is frozenset, it is immutable
Set != List
- Set is extremely faster for checking if an element exists (it is HashTable)
- Set is unordered
- Set can only have unique elements
Creating, Adding, Removing from Set
first_set = set([1,2,3,3,3,3,4]) first_set.add(5) print(max(first_set)) first_set.remove(min(first_set)) print(first_set)
Result:
5
{2, 3, 4, 5}
Frozenset
The frozenset is an immutable set. Thus, once it is created, it cannot be immuted. Thus, even if the .copy() function is not used and simply frozen_first_set = frozenset(first_set) is carried out, the frozen set is not changed, once the initial set is changed. Which is not the case with the test_set :
first_set = set([1,2,3,3,3,3,4]) frozen_first_set = frozenset(first_set) test_set = first_set test_set_copy = first_set.copy() first_set.remove(min(first_set)) print (first_set) print (test_set) print (test_set_copy) print (frozen_first_set)
Result:
{2, 3, 4}
{2, 3, 4}
{1, 2, 3, 4}
frozenset({1, 2, 3, 4})
Set Union
Uniting two sets gives a new set, which consists of the unique values of these two sets. Makes sense.
first_set = set([1,2,3,3,4]) second_set = set([5,6,7,8]) new_set = second_set.union(first_set) print(new_set)
Result:
{1, 2, 3, 4, 5, 6, 7, 8}
Set Intersection
Intersection is tricky. It only returns the set of elements, which are present in both sets.
first_set = set([1,2,3,3,4,88]) second_set = set([5,3,3,8,88]) new_set = second_set.intersection(first_set) print(new_set)
Result:
{88, 3}
Set Symmetric Difference
This is the difference of the two sets. E.g., everything, which is not part of the intersection sets, for both sets.
first_set = set([1,2,3,3,4,88]) second_set = set([5,3,3,8,88]) new_set = second_set.symmetric_difference(first_set) print(new_set)
Result:
{1, 2, 4, 5, 8}
Set Difference
Difference is a bit tricky. It takes the first set and compares it with the second set. Then the returned set contains everything from the second set, which is not in the first.
first_set = set([1,2,3,3,4,88]) second_set = set([5,3,3,8,88]) new_set = second_set.difference(first_set) print(new_set)
Result:
{8, 5}
That’s all!