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.

Advertisements

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s

ultimatemindsettoday

A great WordPress.com site

iReadable { }

.NET Tips & Tricks

Robin Sedlaczek's Blog

Developer on Microsoft Technologies

HarsH ReaLiTy

A Good Blog is Hard to Find

Softwarearchitektur in der Praxis

Wissenswertes zu Webentwicklung, Domain-Driven Design und Microservices

the software architecture

thoughts, ideas, diagrams,enterprise code, design pattern , solution designs

Technology Talks

on Microsoft technologies, Web, Android and others

Software Engineering

Web development

Disparate Opinions

Various tidbits

chsakell's Blog

Anything around ASP.NET MVC,WEB API, WCF, Entity Framework & AngularJS

Cyber Matters

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

Guru N Guns's

OneSolution To dOTnET.

Johnny Zraiby

Measuring programming progress by lines of code is like measuring aircraft building progress by weight.

%d bloggers like this: