Las listas por Comprensión proporcionan una forma muy sencilla de crear listas en Python 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
Código :
>>> 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:
Código :
>>> cadenas = ("23", "2", "465") >>> [int(x) for x in cadenas] [23, 2, 465]
En este caso, generamos la tabla de multiplicar del 3:
Código :
>>> 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:
Código :
>>> 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
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por agares el 11 de Febrero de 2012
por ejemplo:
{"nombre":"Maria", "edad":"35", "hijos":[{"nombre":"Pablo", "edad":"10"},
{"nombre":"Paula","edad":"7"}]}
Saludos!