DEFINICIÓN POR COMPRENSIÓN

Una lista por comprensión (en inglés: list comprehension) es una expresión compacta para definir listas, conjuntos y diccionarios en Python.

  • Se trata de definir cada uno de los elementos sin tener que nombrar cada uno de ellos.

  • La forma general es:

         [exp for val in <coleccion> if <condicion>]
    

    Ejemplos:


In [1]:
m = [(1,2), (3,4), (5,6)]
# construir la lista que contiene el primer elemento de cada tupla de la lista m
# el resultado ha de ser [1,3,5]

lista = [ x for (x,y) in m ]
lista


Out[1]:
[1, 3, 5]

In [2]:
lista = [ y for (x,y) in m ]
lista


Out[2]:
[2, 4, 6]

In [3]:
lista = [ (x+y) for (x,y) in m ]
lista


Out[3]:
[3, 7, 11]

In [4]:
m = [(1,2), (3,4), (5,6)]
# construir la lista que contiene el cuadrado del segundo elemento de cada tupla 
# de la lista m (solo sin son mayores que 2)
# el resultado ha de ser [16, 36]

lista_pow = [ y**2 for x,y in m if x > 2 ]
lista_pow


Out[4]:
[16, 36]

In [5]:
lista_pow =   [ (x**2, y**2) for x,y in m if x > 2 ]
lista_pow


Out[5]:
[(9, 16), (25, 36)]

In [6]:
# Creación de una lista apartir de otra usando listas por comprensión
letras = ['a', 'b', 'g', 'h', 'n' ]
mayusculas = [ a.upper() for a in letras ]
mayusculas

# Creación de la misma lista usando un bucle FOR normal
# mayusculas
# letras = ['a', 'b', 'g', 'h', 'n' ]
# mayusculas = []
# for a in letras:
#     mayusculas.append(a.upper())
# mayusculas


Out[6]:
['A', 'B', 'G', 'H', 'N']

In [7]:
# Para el caso de los diccionario tenemos que indicar clave y valor:
# Construcción de un diccionario
dic_mayusculas = { i : a.upper() for i,a in enumerate(letras) }
dic_mayusculas


Out[7]:
{0: 'A', 1: 'B', 2: 'G', 3: 'H', 4: 'N'}

In [8]:
m = [(1,2), (3,4), (5,6)]
lista_pow = [ y**2 for x,y in m if x > 2 ]
dic_pow  = { x : str(y**2) for x,y in m }
dic_pow


Out[8]:
{1: '4', 3: '16', 5: '36'}

In [ ]: