Python Set and Booleans with Syntax and Examples
Master Python with 70+ Hands-on Projects and Get Job-ready - Learn Python
So far, we have learned about various data types in Python. We dealt with strings, numbers, lists, tuples, and dictionaries.
We’ve also learned that we don’t need to declare the type of data while defining it. Today, we will talk about Python set examples and Python Booleans.
After that, we will move onto python functions in further lessons.
What are Sets in Python?
First, we focus on Python sets. A set in Python holds a sequence of values. It is sequenced but does not support indexing.
We will understand that as we get deeper into the article with the Python set Examples.
1. Creating a Python Set
To declare a set, you need to type a sequence of items separated by commas, inside curly braces. After that, assign it to a Python variable.
>>> a={1,3,2}
As you can see, we wrote it in the order 1, 3, 2. In point b, we will access this set and see what we get back.
A set may contain values of different types.
>>> c={1,2.0,'three'}
a. Duplicate Elements
A set also cannot contain duplicate elements. Let’s try adding duplicate elements to another set, and then access it in point b.
>>> b={3,2,1,2}
b. Mutability
A set is mutable, but may not contain mutable items like a list, set, or even a dictionary.
>>> d={[1,2,3],4}
Output
Traceback (most recent call last):File “<pyshell#9>”, line 1, in <module>d={[1,2,3],4}
TypeError: unhashable type: ‘list’
As we discussed, there is no such thing as a nested Python set.
>>> d={{1,3,2},4}
Output
Traceback (most recent call last):File “<pyshell#10>”, line 1, in <module>
d={{1,3,2},4}
TypeError: unhashable type: ‘set’
c. The Python set() function
You can also create a set with the set() function.
>>> d=set() >>> type(d)
Output
This creates an empty set object. Remember that if you declare an empty set as the following code, it is an empty dictionary, not an empty set. We confirm this using the type() function.
>>> d={} >>> type(d)
Output
The set() function may also take one argument, however. It should be an iterable, like a list.
>>> d=set([1,3,2])
2. Accessing a Set in Python
Since sets in Python do not support indexing, it is only possible to access the entire set at once. Let’s try accessing the sets from point a.
>>> a
Output
Did you see how it reordered the elements into an ascending order? Now let’s try accessing the set c.
>>> c
Output
Finally, let’s access set b.
>>> b
Output
As you can see, we had two 2s when we declared the set, but now we have only one, and it automatically reordered the set.
Also, since sets do not support indexing, they cannot be sliced. Let’s try slicing one.
>>> b[1:]
Output
Traceback (most recent call last):File “<pyshell#26>”, line 1, in <module>
b[1:]
TypeError: ‘set’ object is not subscriptable
As you can see in the error, a set object is not subscriptable.
3. Deleting a Set in Python
Again, because a set isn’t indexed, you can’t delete an element using its index. So for this, you must use one the following methods.
A method must be called on a set, and it may alter the set. For the following examples, let’s take a set called numbers.
>>> numbers={3,2,1,4,6,5} >>> numbers
Output
a. discard()
This method takes the item to delete as an argument.
>>> numbers.discard(3) >>> numbers
Output
As you can see in the resulting set, the item 3 has been removed.
b. remove()
Like the discard() method, remove() deletes an item from the set.
>>> numbers.remove(5) >>> numbers
Output
- discard() vs remove()-
These two methods may appear the same to you, but there’s actually a difference.
If you try deleting an item that doesn’t exist in the set, discard() ignores it, but remove() raises a KeyError.
>>> numbers.discard(7) >>> numbers
Output
>>> numbers.remove(7)
Output
Traceback (most recent call last):File “<pyshell#37>”, line 1, in <module>
numbers.remove(7)
KeyError: 7
c. pop()
Like on a dictionary, you can call the pop() method on a set. However, here, it does not take an argument.
Because a set doesn’t support indexing, there is absolutely no way to pass an index to the pop method. Hence, it pops out an arbitrary item.
Furthermore, it prints out the item that was popped.
>>> numbers.pop()
Output
Let’s try popping anot/her element.
>>> numbers.pop()
Output
Let’s try it on another set as well.
>>> {2,1,3}.pop()
Output
d. clear()
Like the pop method(), the clear() method for a dictionary can be applied to a Python set as well. It empties the set in Python.
>>> numbers.clear() >>> numbers
Output
As you can see, it denoted an empty set as set(), not as {}.
4. Updating a Set in Python
As we discussed, a Python set is mutable. But as we have seen earlier, we can’t use indices to reassign it.
>>> numbers={3,1,2,4,6,5} >>> numbers[3]
Output
Traceback (most recent call last):File “<pyshell#56>”, line 1, in <module>
numbers[3]
TypeError: ‘set’ object does not support indexing
So, we use two methods for this purpose- add() and update(). We have seen the update() method on tuples, lists, and strings.
a. add()
It takes as argument the item to be added to the set.
>>> numbers.add(3.5) >>> numbers
Output
If you add an existing item in the set, the set remains unaffected.
>>> numbers.add(4) >>> numbers
Output
b. update()
This method can add multiple items to the set at once, which it takes as arguments.
>>> numbers.update([7,8],{1,2,9}) >>> numbers
Output
As is visible, we could provide a list and a set as arguments to this. This is because this is different than creating a set.
5. Python Functions on Sets
A function is something that you can apply to a Python set, and it performs operations on it and returns a value. Let’s talk about some of the functions that a set supports.
We’ll take a new set for exemplary purposes.
>>> days={'Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'}
a. len()
The len() function returns the length of a set. This is the number of elements in it.
>>> len(days)
Output
b. max()
This function returns the item from the set with the highest value.
>>> max({3,1,2})
Output
We can make such a comparison on strings as well.
>>> max(days)
Output
The Python function returned ‘Wednesday’ because W has the highest ASCII value among M, T, W, F, and S.
But we cannot compare values of different types.
>>> max({1,2,'three','Three'})
Output
Traceback (most recent call last):File “<pyshell#69>”, line 1, in <module>
max({1,2,’three’,’Three’})
TypeError: ‘>’ not supported between instances of ‘str’ and ‘int’
c. min()
Like the max() function, the min() function returns the item in the Python set with the lowest value.
>>> min(days)
Output
This is because F has the lowest ASCII value among M, T, W, F, and S.
d. sum()
The sum() functionin Python set returns the arithmetic sum of all the items in a set.
>>> sum({1,2,3})
Output
However, you can’t apply it to a set that contains strings.
>>> sum(days)
Output
Traceback (most recent call last):File “<pyshell#72>”, line 1, in <module>
sum(days)
TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’
e. any()
This function returns True even if one item in the set has a Boolean value of True.
>>> any({0})
Output
>>> any({0,'0'})
Output
It returns True because the string ‘0’ has a Boolean value of True.
f. all()
Unlike the any() function, all() returns True only if all items in the Python set have a Boolean value of True. Otherwise, it returns False.
>>> all({0,'0'})
Output
>>> all(days)
Output
g. sorted()
The sorted() function returns a sorted python set to list. It is sorted in ascending order, but it doesn’t modify the original set.
>>> numbers={1, 2, 3, 4, 5, 6, 3.5} >>> sorted(numbers)
Output
6. Python Methods on Sets
Unlike a function in Python set, a method may alter a set. It performs a sequence on operations on a set, and must be called on it.
So far, we have learned about the methods add(), clear(), discard(), pop(), remove(), and update(). Now, we will see more methods from a more mathematical point of view.
a. union()
This method performs the union operation on two or more Python sets. What it does is it returns all the items that are in any of those sets.
>>> set1,set2,set3={1,2,3},{3,4,5},{5,6,7} >>> set1.union(set2,set3)
Output
>>> set1
Output
As you can see, it did not alter set1. A method does not always alter a set in Python.
b. intersection()
This method takes as argument sets, and returns the common items in all the sets.
>>> set2.intersection(set1)
Output
Let’s intersect all three sets.
>>> set2.intersection(set1,set3)
Output
It returned an empty set because these three sets have nothing in common.
c. difference()
The difference() method returns the difference of two or more sets. It returns as a set.
>>> set1.difference(set2)
Output
This returns the items that are in set1, but not in set2.
>>> set1.difference(set2,set3)
Output
d. symmetric_difference()
This method returns all the items that are unique to each set.
>>> set1.symmetric_difference(set2)
Output
It returned 1 and 2 because they’re in set1, but not in set2. It also returned 4 and 5 because they’re in set2, but not in set1. It did not return 3 because it exists in both the sets.
e. intersection_update()
As we discussed in intersection(), it does not update the set on which it is called. For this, we have the intersection_update() method.
>>> set1.intersection_update(set2) >>> set1
Output
It stored 3 in set1, because only that was common in set1 and set2.
f. difference_update()
Like intersection-update(), this method updates the Python set with the difference.
>>> set1={1,2,3} >>> set2={3,4,5} >>> set1.difference_update(set2) >>> set1
Output
g. symmetric_difference_update()
Like the two methods we discussed before this, it updates the set on which it is called with the symmetric difference.
>>> set1={1,2,3} >>> set2={3,4,5} >>> set1.symmetric_difference_update(set2) >>> set1
Output
h. copy()
The copy() method creates a shallow copy of the Python set.
>>> set4=set1.copy() >>> set1,set4
Output
i. isdisjoint()
This method returns True if two sets have a null intersection.
>>> {1,3,2}.isdisjoint({4,5,6})
Output
However, it can take only one argument.
>>> {1,3,2}.isdisjoint({3,4,5},{6,7,8})
Output
Traceback (most recent call last):File “<pyshell#111>”, line 1, in <module>
{1,3,2}.isdisjoint({3,4,5},{6,7,8})
TypeError: isdisjoint() takes exactly one argument (2 given)
j. issubset()
This method returns true if the set in the argument contains this set.
>>> {1,2}.issubset({1,2,3})
Output
>>> {1,2}.issubset({1,2})
Output
{1,2} is a proper subset of {1,2,3} and an improper subset of {1,2}.
k. issuperset()
Like the issubset() method, this one returns True if the set contains the set in the argument.
>>> {1,3,4}.issuperset({1,2})
Output
False
>>> {1,3,4}.issuperset({1})
Output
7. Python Operations on Sets
Now, we will look at the operations that we can perform on sets.
a. Membership
We can apply the ‘in’ and ‘not in’ python operators on items for a set. This tells us whether they belong to the set.
>>> 'p' in {'a','p','p','l','e'}
Output
>>> 0 not in {'0','1'}
Output
8. Iterating on a Set in Python
Like we have seen with lists and tuples, we can also iterate on a set in a for-loop.
>>> for i in {1,3,2}: print(i)
Output
12
3
As you can see, even though we had the order as 1,3,2, it is printed in ascending order.
9. The frozenset
A frozen set is in-effect an immutable set. You cannot change its values. Also, a set can’t be used a key for a dictionary, but a frozenset can.
>>> {{1,2}:3}
Output
Traceback (most recent call last):File “<pyshell#123>”, line 1, in <module>
{{1,2}:3}
TypeError: unhashable type: ‘set’
Now let’s try doing this with a frozenset.
>>> {frozenset(1,2):3}
Output
Traceback (most recent call last):File “<pyshell#124>”, line 1, in <module>
{frozenset(1,2):3}
TypeError: frozenset expected at most 1 arguments, got 2
As you can see, it takes only one argument. Now let’s see the correct syntax.
>>> {frozenset([1,2]):3}
Output
What are Python Booleans?
Finally, let’s discuss Booleans. A Boolean is another data type that Python has to offer.
1. Value of a Boolean
As we have seen earlier, a Boolean value may either be True or be False. Some methods like isalpha() or issubset() return a Boolean value.
2. Declaring a Boolean
You can declare a Boolean just like you would declare an integer.
>>> days=True
As you can see here, we didn’t need to delimit the True value by quotes. If you do that, it is a string, not a Boolean.
Also note that what was once a set, we have reassigned a Boolean to it.
>>> type('True')
Output
3. The bool() function
Like we have often seen earlier, the bool() function converts another value into the Boolean type.
>>> bool('Wisdom')
Output
>>> bool([])
Output
4. Boolean Values of Various Constructs
Different values have different equivalent Boolean values. In this example, we use the bool() Python set function to find the values.
For example, 0 has a Boolean value of False.
>>> bool(0)
Output
1 has a Boolean value of True, and so does 0.00000000001.
>>> bool(0.000000000001)
Output
A string has a Boolean value of True, but an empty string has False.
>>> bool(' ')
Output
>>> bool('')
Output
In fact, any empty construct has a Boolean value of False, and a non-empty one has
Output
>>> bool(())
Output
>>> bool((1,3,2))
Output
5. Operations on Booleans
a. Arithmetic
You can apply some arithmetic operations to a set. It takes 0 for False, and 1 for True, and then applies the operator to them.
- Addition
You can add two or more Booleans. Let’s see how that works.
>>> True+False #1+0
Output
>>> True+True #1+1
Output
>>> False+True #0+1
Output
>>> False+False #0+0
- Subtraction and Multiplication
The same strategy is adopted for subtraction and multiplication.
>>> False-True
Output
- Division
Let’s try dividing Booleans.
>>> False/True
Output
Remember that division results in a float.
>>> True/False
Output
Traceback (most recent call last):File “<pyshell#148>”, line 1, in <module>
True/False
ZeroDivisionError: division by zero
This was an exception that raised. We will learn more about exception in a later lesson.
- Modulus, Exponentiation, and Floor Division
The same rules apply for modulus, exponentiation, and floor division as well.
>>> False%True >>> True**False
Output
>>> False**False
Output
>>> 0//1
Try your own combinations like the one below.
>>> (True+True)*False+True
Output
b. Relational
The relational operators we’ve learnt so far are >, <, >=, <=, !=, and ==. All of these apply to Boolean values.
We will show you a few examples, you should try the rest of them.
>>> False>True
Output
>>> False<=True
Output
Again, this takes the value of False to be 0, and that of True to be 1.
c. Bitwise
Normally, the bitwise operators operate bit-by bit. For example, the following code ORs the bits of 2(010) and 5(101), and produces the result 7(111).
>>> 2|5
Output
But the bitwise operators also apply to Booleans. Let’s see how.
- Bitwise &
It returns True only if both values are True.
>>> True&False
Output
>>> True&True
Output
Since Booleans are single-bit, it’s equivalent to applying these operations on 0 and/or
- Bitwise |
It returns False only if both values are False.
>>> False|True
Output
- Bitwise XOR (^)
This returns True only if one value is True and one is False.
>>> False^True
Output
>>> False^False
Output
>>> True^True
Output
- Binary 1’s Complement
This calculates 1’s complement for True(1) and False(0).
>>> ~True
Output
>>> ~False
Output
- Left-shift(<<) and Right-shift(>>) Operators
As discussed earlier, these operators shift the value by specified number of bits left and right, respectively.
>>> False>>2 >>> True<<2
Output
True is 1. When shifted two places two the left, it results in 100, which is binary for 4. Hence, it returns 4.
d. Identity
The identity operators ‘is’ and ‘is not’ apply to Booleans.
>>> False is False
Output
>>> False is 0
Output
e. Logical
Finally, even the logical operators apply on Booleans.
>>> False and True
Output
This was all about the article on Python set and booleans.
Python Interview Questions on Sets and Booleans
- What is Boolean in Python?
- How do you set a Boolean value in Python?
- Give an example of Python set and Boolean ?
- How do you use Boolean in Python?
- How do you check if a value is a Boolean in Python?
Conclusion
In conclusion, we see that a Python Boolean value may be True or False. You may create it or use it when it’s returned by a method. We learned how to create, access, update, and delete a set.
We saw how it is mutable and that is why we can’t use indexing to access, update, or delete it. So, we use certain Python set functions and methods for the same.
Lastly, we learned about various operations that we can apply on a set. And we learned that some bitwise and logical operators mean the same thing on Booleans.
See you tomorrow. Hope you liked our article on python sets and booleans.
Did you know we work 24x7 to provide you best tutorials
Please encourage us - write a review on Google
>>> numbers={5,4,3};
>>> numbers.update({11,10},[13,12],(20,19))
>>> numbers
{3, 4, 5, 20, 19, 10, 11, 12, 13}
can someone explain why here numbers are not sorted after updating
just tried this in python 3.7.3 and it’s sorted.
Hi Deepak,
Thanks for posting a query related to Python Sets and Booleans. The result you found may be because you are using an old version of Python. All the Python tutorials are on Python 3. Try to run your code in the latest version of Python. Hope, it will solve your query.
I don’t understand why (~ True) is (-1), and (~ False) is (-2). If True is 00000001 then ~ 00000001 is 11111110 i.e. 254.
Hi Grigorie,
The binary complement of a number x is equivalent to -x-1.
So ~True = ~1 which results in -1-1 i.e. -2
For ~False, you will get -0-1 i.e. -1
If you check bin(1) then you will observe that bin(1) is ‘0b1
Thank you very much!
Can sets contain boolean values as elements? If not, why?
Yes, sets can contain boolean values.
The information about pop() with set isn’t correct here. The pop() on set pops the first element of the set.
{2, 1, 3}.pop() will remove 1 as when a set is created, it sorts the elements, and then pop removes the first element. It isn’t arbitrary as claimed in the post
You might be confused between set and stck.The information is correct for set and what you are saying is correct for stack.
can give explanation on question number 14