Asi que en la entrada sobre la Criba de Eratóstenes, hubo un linea, return [j for (j,k) in enumerate(a) if k == True]. Esta línea usó lista por comprensión, y pensé que sería apropiado hablarla para una siguiente entrada.

Lista por Comprensión

Las listas por comprensión permiten una línea concisa de codificación y la construcción de listas en listas. La lista por comprensión se puede usar en ambos Python 2,7 y Python 3. Hay cuatro partes para la lista por comprensión: un variable, una secuencia entrada, una expresión salida, y predicado opcional.

Para explicar la línea del entrada anterior, (j,k) son los variables; la secuencia entrada es a; la expresión salida es j, y el predicado opcional es if k==True. Generalmente, mostraría como:

lista_vacía = []
for (j,k) in enumerate(a): 
    if k == True: 
        lista_vacía.append(j)
return lista_vacía

If-Else

La construcción de la lista por comprensión cambia, cuando se usa la sentencia else. Las sentencias if y else van directamente después de la expresión salida. Por ejemplo, el código abajo muestra los cuadrados de números pares y los cubos de números impares entre el alance de 0 a 9.

[x**2 if x % 2 == 0 else x**3 for x in range(10)]

Generalmente, se muestra como:

lista_vacía = []
for x in range(10): 
    if x % 2 == 0: 
        lista_vacia.append(x**2) 
    else:
        lista_vacia.append(x**3)
return lista_vacía

Lista por Comprensión Anidada

Aqui es un ejemplo de una lista por comprensión anidada.

[(x, y) for x in range(1, 5) for y in range(0, x)]

Generalmente se muestra como:

for x in range(1,5): 
     for y in range(0,x):
         print x, y

Expresión Generadora

Una expresión generadora tiene la misma sintaxis que una lista por comprensión, pero sin los corchetes para la lista, por supuesto. Las expresiones generadoras puede usar funciones agregadas como sum() y min() y además de operadores set() y dict(). Por ejemplo:

sum(x**2 for x in range(20))

Conjuntos por Comprensión

Antes de explicar los conjuntos por comprensión, quiero decir que un conjunto vacío se escribe set() y {} está un diccionario vacío. De todos modos, los conjunto por comprensión se siguen la misma sintaxis que las listas por compresión, excepto que se escribe entre llaves.

{color for color in ['rojo', 'amarillo', 'azul', 'blanco', 'almagre'] if color[0] == 'a'}

Diccionario por Comprensión

Los diccionarios por comprensión pueden ser usados en Python 2.7 y Python 3. Un diccionario por comprensión se escribe entre llaves como conjuntos por comprensión. Tiene la forma {clave : valor for (clave : valor) in iterable}. Un ejemplo:

valores = [1,2,3]
claves = ['a', 'b', 'c']
zip(claves, valores)
[('a', 1), ('b', 2), ('c', 3)]
{a:b for a,b in zip(claves, valores)}
{'a': 1, 'b': 2, 'c': 3}

Nota de Autor: Volví.

Más informació:

https://piensapython.com/python/2016/06/27/listas-diccionarios-por-comprension/

http://docs.python.org.ar/tutorial/3/datastructures.html#comprension-de-listas

http://claudiovz.github.io/scipy-lecture-notes-ES/advanced/advanced_python/index.html#expresiones-generadoras

http://mundogeek.net/archivos/2008/03/10/python-programacion-funcional/

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *