Listas por Comprensión en Python

Las listas por comprensión proporcionan una forma muy sencilla de crear listas a partir de secuencias (list/listas, tuple/tuplas, dict/diccionarios, set/conjuntos, str/cadenas). El uso más común de esta característica es el de construir listas, donde cada uno de sus elementos son el resultado de alguna operación aplicada a cada uno de los elementos de la secuencia, o para crear una sub-secuencia de elementos que cumplan ciertas condiciones.

Las listas por comprensión están compuestas por corchetes, los cuales encierran una expresión seguida por una cláusula for y, a continuación cero o más cláusulas for o cláusulas if.

Aquí tomamos una lista de números y retornamos una lista con sus cubos

>>> numeros = range(1, 5)     # Equivalente a 'numeros = [1, 2, 3, 4]'
>>> [x**3 for x in numeros]
[1, 8, 27, 64]

Podemos realizar operaciones tales como convertir una tupla de cadenas a una lista de enteros:

>>> cadenas = ("23", "2", "465")
>>> [int(x) for x in cadenas]
[23, 2, 465]

En este caso, generamos la tabla de multiplicar del 3:

>>> tabla = [(x, x*3) for x in range(11)]
>>> for x, y in tabla:
...  print(x, " ", y)
... 
0   0
1   3
2   6
3   9
4   12
5   15
6   18
7   21
8   24
9   27
10   30

Imaginen que poseemos un diccionario de la forma nombre -> estado (clave -> valor), el estado representa si la persona cuyo nombre es nombre irá o no a tu cumpleaños y deseas obtener los nombres de las personas que sí asistirán. He aquí un fragmento de código que te puede ayudar:

>>> invitados = {"María": "Asistirá", "Luis": "Asistirá", "Ángel": "No asistirá",
... "Pedro": "Asistirá", "Carla": "No asistirá"}
>>> [nombre for nombre, estado in invitados.items() if estado == "Asistirá"]
['Pedro', 'Luis', 'María']


Nota: Deseo agradecer al Claber @JaAViEr por la idea :)

Anuncios

2 comentarios to “Listas por Comprensión en Python”

  1. Jose Visliquez Says:

    Uhm se ve interesante, he visto que la comunidad de python ha crecido en los ultimos años debido a su facilidad para manejar ciertas situaciones, nunca he tenido la oportunidad de manejarlo a fondo pero sin dudas le daré un buen repaso cuando tenga la oportunidad, mientras tanto me castigo con C y si no muero en el intento un poco de assembler O.o…

    off-topic: Ya que mencioné assembler al final quisiera que probarás un SO software libre escrito completamente en assembler, está groso se llama KolibriOS la imagen iso pesa 4mb :)..

    • Edinson E. Padrón U. Says:

      C es genial, es mi lenguaje Orientado a Procedimientos favorito. Pero a efectos prácticos, cuando necesitas desarrollar sistemas complejos en un periodo de tiempo razonable, C se queda muy corto.

      Gracias por la recomendación en relación a KolibriOS, cuando disponga del tiempo lo probaré 🙂


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: