Comprehension list en Python

¿Conocéis las Comprehension list de Python? Se trata de una forma rápida, limpia y sencilla de crear listas de valores.

La idea es sustituir código como este:

cuadrados = []
for x in range(10):
    cuadrados.append(x**2)

Por código como este:

cuadrados = [x**2 for x in range(10)]

En ambos casos el resultado es el mismo. Una variable cuadrados que contiene una lista como esta [0, 1, 4, 9, 16, 25, 36, 49, 64, 81].

Podemos hacer listas con varios bucles anidados:

[(let, num) for let in ['a', 'b'] for num in [1,2,3]]
[('a', 1),
 ('a', 2),
 ('a', 3),
 ('b', 1),
 ('b', 2),
 ('b', 3)]

También podemos incluir condicionales. Por ejemplo, para crear una lista sólo con múltiplos de 3:

[x for x in range(20) if x%3 == 0]
[0, 3, 6, 9, 12, 15, 18]

Eso es todo. Sencillo, ¿no?