Python language basics 69: filtering comprehensions
December 5, 2015 1 Comment
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.
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:
…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.