# Python language basics 49: introduction to sets

September 20, 2015 Leave a comment

**Introduction**

In the previous post we looked at the built-in enumerate function in Python. We saw how it could be used to get an item counter while looping through a collection. It provides a more elegant and reliable solution compared to a manual counter variable that’s updated after every iteration.

In this post we’ll start discussing how sets are represented in Python.

**Sets**

What are sets? A set is defined as follows on Wikipedia here:

“In mathematics, a set is a collection of distinct objects, considered as an object in its own right. For example, the numbers 2, 4, and 6 are distinct objects when considered separately, but when they are considered collectively they form a single set of size three, written {2,4,6}.”

So a set is a collection of unique objects. That’s exactly what sets are in Python as well. They are collections of unique objects with no duplication allowed. I don’t know if it was a conscious choice when building this part of the Python language but sets are declared in code exactly as it says in the Wikipedia article:

capitals = {"Stockholm", "Budapest", "Helsinki", "Copenhagen", "Oslo", "Paris"}

…i.e. with curly-braces and comma-delimited objects.

Non-unique elements are filtered out:

capitals = {"Stockholm", "Budapest", "Helsinki", "Stockholm", "Copenhagen", "Oslo", "Paris", "Helsinki", "Paris"} print(capitals)

…which prints

{‘Budapest’, ‘Oslo’, ‘Helsinki’, ‘Paris’, ‘Copenhagen’, ‘Stockholm’}

This works equally well for integers:

years = {1800, 1804, 1789, 1800, 1804, 1805, 1810, 1789} print(years)

{1800, 1810, 1804, 1789, 1805}

You can easily build a set from a list or a tuple where the non-unique values will be filtered out.

Here’s an example with a list:

capitals_list = ["Stockholm", "Budapest", "Helsinki", "Stockholm", "Copenhagen", "Oslo", "Paris", "Helsinki", "Paris"] capitals_set = set(capitals_list) print(capitals_set)

‘capitals_set’ will contain…

{‘Budapest’, ‘Stockholm’, ‘Paris’, ‘Helsinki’, ‘Oslo’, ‘Copenhagen’}

And here’s an example with a tuple of integers:

years_list = (1800, 1804, 1789, 1800, 1804, 1805, 1810, 1789) years_set = set(years_list) print(years_set)

{1800, 1810, 1804, 1789, 1805}

If you want to declare an empty set you can use the set constructor with no input parameters:

empty_set = set()

You can loop through a set as we saw here using a for-each loop. Whether or not a set includes a specific object can be tested like we saw here using the ‘in’ operator.

In the next post we’ll discover how to add elements to a set.

Read all Python-related posts on this blog here.