Summary: in this tutorial, you’ll learn how to use Python set comprehension to create a new set based on an existing one.
Introduction to Python Set comprehension #
Suppose that you have the following set that consists of three tags:
tags = {'Django', 'Pandas', 'Numpy'}
Code language: Python (python)
To convert the tags in the set to another set of tags in lowercase, you may use the following for
loop:
tags = {'Django', 'Pandas', 'Numpy'}
lowercase_tags = set()
for tag in tags:
lowercase_tags.add(tag.lower())
print(lowercase_tags)
Code language: Python (python)
Output:
{'django', 'numpy', 'pandas'}
Code language: Python (python)
How it works:
- First, iterate over each element of the
tags
set. - Second, convert each tag to lowercase and add it the new set (
lowercase_tags
)
Or you can use the built-in map()
function with a lambda expression:
tags = {'Django', 'Pandas', 'Numpy'}
lowercase_tags = set(map(lambda tag: tag.lower(), tags))
print(lowercase_tags)
Code language: Python (python)
The map()
function returns a map object so you need to use the set()
function to convert it to a set.
To make the code more concise, Python provides you with the set comprehension syntax as follows:
{expression for element in set if condition}
Code language: Python (python)
The set comprehension allows you to create a new set based on an existing set.
A set comprehension carries the following steps:
- First, iterate over the elements of a set.
- Second, apply an
expression
to each element - Third, create a new set of elements resulting from the expression.
In addition, the set comprehension allows you to select which element to apply the expression via a condition
in the if
clause.
Note that the set comprehension returns a new set, it doesn’t modify the original set.
Back to the previous example, you can convert all the tags in the tags
set by using the following set comprehension:
tags = {'Django', 'Pandas', 'Numpy'}
lowercase_tags = {tag.lower() for tag in tags}
print(lowercase_tags)
Code language: Python (python)
Output:
{'numpy', 'pandas', 'django'}
Code language: JavaScript (javascript)
This syntax definitely looks more concise than a for loop and more elegant than the map()
function.
Python Set comprehension with an if clause example #
Suppose you want to convert all elements of the tags
set to lowercase except for the Numpy
.
To do it, you can add a condition to the set comprehension like this:
tags = {'Django', 'Pandas', 'Numpy'}
new_tags = {tag.lower() for tag in tags if tag != 'Numpy'}
print(new_tags)
Code language: Python (python)
Output:
{'django', 'pandas'}
Code language: Python (python)
Summary #
- Use Python set comprehension to create a new set based on an existing set by applying an expression to each element of the existing set.