Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

This lesson is for members only. Join us and get access to thousands of tutorials and a community of expert Pythonistas.

Unlock This Lesson

Hint: You can adjust the default video playback speed in your account settings.
Hint: You can set your subtitle preferences in your account settings.
Sorry! Looks like there’s an issue with video playback 🙁 This might be due to a temporary outage or because of a configuration issue with your browser. Please refer to our video player troubleshooting guide for assistance.

The filter() Function: Overview

In this section, you’ll learn the basics of functional programming in Python and how to use the filter() function to transform data structures.

You’ll take the example data set represented with an immutable data structure from the previous section. Then you’ll create a filtered down version of the same data using Python’s built-in filter() function, which is one of the functional programming primitives (or building blocks) available in Python. It’s useful in a number of contexts.

Later in this section, you’ll also see how filter() relates to list comprehensions and generator expressions in Python, and how using these is arguably more Pythonic than relying on plain filter() calls.

Jacques Clement on March 26, 2020

Would a set of named tuples have not been more appropriate than a tuple of named tuples in this example? You don’t wanna see duplicates in a data structure like this one, so is set not what would enforce this? Thanks in advance.

Dan Bader RP Team on March 26, 2020

Good question, Jacques! Since the input data was an ordered table of rows (see lesson #1) I went with a pretty direct translation using a tuple as the top-level data structure.

But a set of named tuples should work just as well, depending on the Python version a set would also retain the order of elements.

kemboirodgers00 on April 27, 2020

Dan really helpful thank you

Levi on Feb. 2, 2021

For anyone wanting to follow along without typing the code in manually:

import collections

Scientist = collections.namedtuple("Scientist", ["name", "field", "born", "nobel"])
scientists = (
    Scientist(name="Ada Lovelace", field="math", born=1815, nobel=False),
    Scientist(name="Emmy Noether", field="math", born=1882, nobel=False),
    Scientist(name="Marie Curie", field="physics", born=1867, nobel=True),
    Scientist(name="Tu Youyou", field="chemistry", born=1930, nobel=True),
    Scientist(name="Ada Yonath", field="chemistry", born=1939, nobel=True),
    Scientist(name="Vera Rubin", field="astronomy", born=1928, nobel=False),
    Scientist(name="Sally Ride", field="physics", born=1951, nobel=False),

Become a Member to join the conversation.