Python language basics 69: filtering comprehensions

Introduction

In the previous post we discussed how to iterate over a dictionary with the concise comprehension syntax. We saw that it wasn’t very different from how list comprehensions are written.

In this post we’ll look at how to attach a conditional clause to a comprehension function.

Filtering comprehensions

Recall the standard “formula” for comprehensions: the standard for-each iteration, e.g. “for capital in capitals” is preceded by a function that operates on each element in the iteration, such as “upper()”:

capitals = ["Tirana", "Skopje", "Moscow", "Budapest", "Sofia", "Belgrade"]
capitals_upper = [capital.upper() for capital in capitals]

The comprehension function can be extended with an if-clause that is also applied to the actual element in the iteration. The if statement is appended to the for-each part of the comprehension formula. Here’s how to exclude capitals with less than 6 letters:

capitals_upper = [capital.upper() for capital in capitals if len(capital) > 6]
print(capitals_upper)

Here’s the result:

[‘BUDAPEST’, ‘BELGRADE’]

…i.e. the capitals with less than 6 chars have not been treated by the iteration function.

The above one-liner can be unpacked into “normal” code as follows:

capitals_upper_long = []
for capital in capitals:
    if len(capital) > 6:
        capitals_upper_long.append(capital.upper())

capitals_upper_long will include the same elements as capitals_upper.

We’ll start looking at something entirely different in the next post: classes.

Read all Python-related posts on this blog here.

Advertisement

About Andras Nemes
I'm a .NET/Java developer living and working in Stockholm, Sweden.

One Response to Python language basics 69: filtering comprehensions

  1. Pingback: Python language basics 69: filtering comprehensions | Dinesh Ram Kali.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Elliot Balynn's Blog

A directory of wonderful thoughts

Software Engineering

Web development

Disparate Opinions

Various tidbits

chsakell's Blog

WEB APPLICATION DEVELOPMENT TUTORIALS WITH OPEN-SOURCE PROJECTS

Once Upon a Camayoc

Bite-size insight on Cyber Security for the not too technical.

%d bloggers like this: