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 on to 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

<class ‘set’>

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

<class ‘dict’>

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

{1, 2, 3}

Did you see how it reordered the elements into an ascending order? Now let’s try accessing the set c.

>>> c

Output

{1, 2.0, ‘three’}

Finally, let’s access set b.

>>> b

Output

{1, 2, 3}

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 of 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

{1, 2, 3, 4, 5, 6}

a. discard() method in Python

This method takes the item to delete as an argument.

>>> numbers.discard(3)
>>> numbers

Output

{1, 2, 4, 5, 6}

As you can see in the resulting set, item 3 has been removed.

b. remove() method in Python

Like the discard() method, remove() deletes an item from the set.

>>> numbers.remove(5)
>>> numbers

Output

{1, 2, 4, 6}

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

{1, 2, 4, 6}
>>> numbers.remove(7)

Output

Traceback (most recent call last):File “<pyshell#37>”, line 1, in <module>

numbers.remove(7)

KeyError: 7

c. pop() method in Python set

Like in 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

1

Let’s try popping anot/her element.

>>> numbers.pop()

Output

2

Let’s try it on another set as well.

>>> {2,1,3}.pop()

Output

1

d. clear() method in Python set

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

set()

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() method in Python set

It takes as an argument the item to be added to the set.

>>> numbers.add(3.5)
>>> numbers

Output

{1, 2, 3, 4, 5, 6, 3.5}

If you add an existing item in the set, the set remains unaffected.

>>> numbers.add(4)
>>> numbers

Output

{1, 2, 3, 4, 5, 6, 3.5}

b. update() method in Python set

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

{1, 2, 3, 4, 5, 6, 3.5, 7, 8, 9}

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() function in Python set

The len() function returns the length of a set. This is the number of elements in it.

>>> len(days)

Output

7

b. max() function in Python set

This function returns the item from the set with the highest value.

>>> max({3,1,2})

Output

3

We can make such a comparison on strings as well.

>>> max(days)

Output

‘Wednesday’

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() function in Python set

Like the max() function, the min() function returns the item in the Python set with the lowest value.

>>> min(days)

Output

‘Friday’

This is because F has the lowest ASCII value among M, T, W, F, and S.

d. sum() function in Python set

The sum() functionin Python set returns the arithmetic sum of all the items in a set.

>>> sum({1,2,3})

Output

6

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() function in Python set

This function returns True even if one item in the set has a Boolean value of True.

>>> any({0})

Output

False
>>> any({0,'0'})

Output

True

It returns True because the string ‘0’ has a Boolean value of True.

f. all() function in Python set

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

False
>>> all(days)

Output

True

g. sorted() function in Python set

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

[1, 2, 3, 3.5, 4, 5, 6]

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() method in Python set

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.

Python Union

Union in Python Set

>>> set1,set2,set3={1,2,3},{3,4,5},{5,6,7}
>>> set1.union(set2,set3)

Output

{1, 2, 3, 4, 5, 6, 7}
>>> set1

Output

{1, 2, 3}

As you can see, it did not alter set1. A method does not always alter a set in Python.

b. intersection() method in Python set

This method takes as arguments sets, and returns the common items in all the sets.

Python intersection

Intersection Set in Python

>>> set2.intersection(set1)

Output

{3}

Let’s intersect all three sets.

>>> set2.intersection(set1,set3)

Output

set()

It returned an empty set because these three sets have nothing in common.

c. difference() method in Python set

The difference() method returns the difference of two or more sets. It returns as a set.

Python Difference

Difference Python Set

>>> set1.difference(set2)

Output

{1, 2}

This returns the items that are in set1, but not in set2.

>>> set1.difference(set2,set3)

Output

{1, 2}

d. symmetric_difference() method in Python set

This method returns all the items that are unique to each set.

python symmetric difference

Symmetric difference set in Python

>>> set1.symmetric_difference(set2)

Output

{1, 2, 4, 5}

It returned 1 and 2 because they’re in set1, but not in set2. This 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() method in Python set

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

{3}

It stored 3 in set1, because only that was common in set1 and set2.

f. difference_update() method in Python set

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

{1, 2}

g. symmetric_difference_update() method in Python set

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

{1, 2, 4, 5}

h. copy() method in Python set

The copy() method creates a shallow copy of the Python set.

>>> set4=set1.copy()
>>> set1,set4

Output

({1, 2, 4, 5}, {1, 2, 4, 5})

i. isdisjoint() method in Python set

This method returns True if two sets have a null intersection.

>>> {1,3,2}.isdisjoint({4,5,6})

Output

True

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() method in Python set

This method returns true if the set in the argument contains this set.

>>> {1,2}.issubset({1,2,3})

Output

True
>>> {1,2}.issubset({1,2})

Output

True

{1,2} is a proper subset of {1,2,3} and an improper subset of {1,2}.

k. issuperset() method in Python set

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

True

7. Python Operations on Sets

Now, we will look at the operations that we can perform on sets.

a. Membership operation

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

True
>>> 0 not in {'0','1'}

Output

True

8. Iterating on a Set in Python

As we have seen with lists and tuples, we can also iterate over 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 an immutable set. You cannot change its values. Also, a set can’t be used as a key for a dictionary, but a frozenset can.

Characteristics of frozenset in Python:

  • Immutable: Once the frozenset is formatted, you cannot add, remove, or change the elements.
  • Hashable: Frozen sets are different from other sets as they act as a key in dictionaries or an element in another set.
  • Unordered: They do not have their specific positions.
  • Unique feature: It has the ability to remove duplicate data entries.
>>> {{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

{frozenset({1, 2}): 3}

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

<class ‘str’>

3. The bool() function in Python

Like we have often seen earlier, the bool() function converts another value into the Boolean type.

>>> bool('Wisdom')

Output

True
>>> bool([])

Output

False

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

False

1 has a Boolean value of True, and so does 0.00000000001.

>>> bool(0.000000000001)

Output

True

A string has a Boolean value of True, but an empty string has False.

>>> bool(' ')

Output

True
>>> bool('')

Output

False

In fact, any empty construct has a Boolean value of False, and a non-empty one has

Output

True.
>>> bool(())

Output

False
>>> bool((1,3,2))

Output

True

5. Operations on Booleans

a. Arithmetic Operation

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

1
>>> True+True #1+1

Output

2
>>> False+True #0+1

Output

1
>>> False+False #0+0

Subtraction and Multiplication:

The same strategy is adopted for subtraction and multiplication.

>>> False-True

Output

-1

Division:

Let’s try dividing Booleans.

>>> False/True

Output

0.0

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 was raised. We will learn more about exceptions 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

1
>>> False**False

Output

1
>>> 0//1

Try your own combinations like the one below.

>>> (True+True)*False+True

Output

1

b. Relational Operation

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
>>> False<=True

Output

True

Again, this takes the value of False to be 0, and that of True to be 1.

c. Bitwise Operation

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

7

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

False
>>> True&True

Output

True

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

True

Bitwise XOR (^) :

This returns True only if one value is True and one is False.

>>> False^True

Output

True
>>> False^False

Output

False
>>> True^True

Output

False

Binary 1’s Complement :

This calculates 1’s complement for True(1) and False(0).

>>> ~True

Output

-2
>>> ~False

Output

-1

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

4

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 Operation

The identity operators ‘is’ and ‘is not’ apply to Booleans.

>>> False is False

Output

True
>>> False is 0

Output

False

e. Logical Operation

Finally, even the logical operators apply on Booleans.

>>> False and True

Output

False

This was all about the article on Python sets and booleans.

Python Interview Questions on Sets and Booleans

1. What is Boolean in Python?

2. How do you set a Boolean value in Python?

3. Give an example of a Python set and a Boolean?

4. How do you use Boolean in Python?

5. How do you check if a value is a Boolean in Python?

Conclusion

A Python set is an unordered bag of unique items, built for rapid membership tests. Put data inside curly braces and duplicates vanish automatically, leaving each element only once. This feature shines when cleaning lists of user IDs, tags, or sensor codes.

Because sets use hashing like dictionaries, the expressions if x in my_set or my_set.add(x) runs in constant time even for ten million items. Set math—union, intersection, difference—maps directly to operations in logic and search filters. Booleans, on the other hand, are the tiny twins True and False that steer program flow.

See you tomorrow. Hope you liked our article on Python sets and booleans.

Did you like this article? If Yes, please give DataFlair 5 Stars on Google

courses

DataFlair Team

DataFlair Team creates expert-level guides on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our goal is to empower learners with easy-to-understand content. Explore our resources for career growth and practical learning.

11 Responses

  1. Deepak S P says:

    >>> 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

    • Pythoner says:

      just tried this in python 3.7.3 and it’s sorted.

    • DataFlair Team says:

      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.

  2. grigorie_p says:

    I don’t understand why (~ True) is (-1), and (~ False) is (-2). If True is 00000001 then ~ 00000001 is 11111110 i.e. 254.

    • DataFlair Team says:

      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

  3. Joshua says:

    Can sets contain boolean values as elements? If not, why?

  4. Priyen Shah says:

    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

    • DataFlair says:

      You might be confused between set and stck.The information is correct for set and what you are saying is correct for stack.

  5. Prateek Poddar says:

    can give explanation on question number 14

Leave a Reply

Your email address will not be published. Required fields are marked *