Listas por Comprensión


Las listas por comprensión permiten escribir de forma compacta trozos de código que necesitarían de bucles for más complejos.
Fíjate en el siguiente ejemplo:
>>> [i+3 for i in range(10)]
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
¿Qué hace la lista por comprensión anterior? Primero, con la orden range genera una lista de enteros. Con la indicación del for hace que la variable i recorra cada uno de sus elementos y con i+3 conseguimos que los devuelva sumados con 3. ¿Entiendes la notación? Siempre es algo del estilo
[... for ... in ...]
En el lugar indicado por los primeros puntos se pone la operación que quiero que haga Python sobre cada elemento, para ello, en el espacio indicado por los siguientes puntos se escribe un nombre de variable que representa cada uno de los elementos de los indicados en el lugar de los terceros puntos.
También puede hacerse un filtrado, es decir, aplicar la operación deseada a sólo parte de los elementos. Para ello, se añade en la lista por comprensión un if y la condición que se desea que cumplan los elementos que queremos usar. Por ejemplo, si queremos que nos devuelva únicamente los números impares (es decir, los que al dividir por 2 nos dan de resto 0) haremos:
>>> [x for x in range(10) if x%2 == 1]
[1, 3, 5, 7, 9]
Otro ejemplo; obtener la primera letra de cada palabra de una lista.
>>> listaPalabras = ['hola','globo','perro']
>>> [palabra[0] for palabra in listaPalabras]
['h', 'g', 'p']