Filtrar una lista de libros para quitar uno de ellos
Asumamos tener una lista con títulos de distintos libros y queremos filtrar esta lista para remover el de 50 sombras de Grey.
Esto se logra de manera muy sencilla con los list comprehension de python.
1 |
buenos_libros = [libro for libro in libros if libro['titulo'] !== '50 sombras de Grey'] |
Si te has quedado sin entender lo que esta pasando en esta línea, sigue leyendo para entender pieza a pieza.
Qué es una lista en Python
La lista es el tipo de datos más versátil disponible en Python que se puede escribir como una lista de valores separados por comas (elementos) entre corchetes. Lo importante de una lista es que los elementos de una lista no tienen que ser del mismo tipo.
Crear una lista es tan simple como colocar diferentes valores separados por comas entre corchetes. Por ejemplo
1 2 3 |
lista1 = ['fisica', 'quimica', 1997, 2000] lista2 = [1, 2, 3, 4, 5] lista3 = ["a", "b", "c", "d"] |
Cómo funciona la iteración en Python
Las listas en Python son elementos iterables, de modo que se pueden recorrer la lista por cada uno de sus elementos de esta manera
1 2 3 |
coleccion = ['hey', 5, 'd'] for elemento in coleccion: print elemento |
Qué hace el “List comprenhension” para filtrar una lista en Python
Python es conocido por tener técnicas muy “al estilo python” que comúnmente se le dice “pythonic”.
Entre esas cosas muy pythonic, una de ellas es el list comprenhension, que podría traducirse como “comprensión de listas”.
Las comprensiones de listas proporcionan una forma concisa de crear listas.
Las aplicaciones comunes son hacer nuevas listas donde cada elemento es el resultado de algunas operaciones aplicadas a cada miembro de otra secuencia o de otra estructura iterable, o crear una subsecuencia de aquellos elementos que satisfacen una determinada condición.
Por ejemplo, supongamos que queremos crear una lista de cuadrados, como:
1 2 3 |
cuadrados = [] for x in range(10): cuadrados.append(x**2) |
Esto mismo podríamos lograrlo
1 |
cuadrados = list(map(lambda x: x**2, range(10))) |
Pero con list comprenhension sería
1 |
cuadrados = [x**2 for x in range(10)] |
Es decir, sobre una iteración for x in range(10) estamos obteniendo un nuevo valor x que además estamos elevevando al cuadrado x**2, y ese valor se esta almacenando en una nueva lista llamada cuadrados.
En este pythonic modo de hacer las cosas, podemos además agregar condicionales sobre la iteración, lo cual sigue iterando sobre la lista, pero no tomará el valor si la condición se cumple.
1 |
cuadrados = [x**2 for x in range(10) if x%2 == 0] |
En este ejemplo sólo tenemos los cuadrados de los números impares.
¿Te gustó este artículo?
Si te gustó este artículo, te ha servido o aprendiste algo nuevo; compártelo en tus redes sociales o invítame un cafe.