Introducción a la lista de comprensiones Python
Las comprensiones proporcionan una forma corta y fácil de construir nuevas secuencias utilizando secuencias ya definidas en Python. Estas secuencias pueden ser Listas, Conjuntos, Diccionarios, etc. La comprensión de listas es una de las características valiosas de Python. En pocas palabras, List Comprehensions ofrece una forma de crear nuevas listas basadas en listas existentes. En otras palabras, las comprensiones de listas son una forma simple de crear una lista basada en algunos iterables. Aquí, un iterable es cualquier cosa que se pueda usar para recorrer. Las comprensiones de listas permiten utilizar una sintaxis alternativa para crear listas y cualquier otro tipo de datos secuenciales en python. Echaremos un vistazo a cómo estos son útiles más adelante. Hay 3 componentes de List Comprehension, estos son:
- Expresión de salida: esta es opcional y se puede ignorar.
- Iterable
- Una variable que representa miembros de la iterable, a menudo se llama variable iterador.
Sintaxis y ejemplos:
En python, podemos crear listas de comprensiones usando la siguiente sintaxis:
list_variable = (x for x in iterable)
Como puede ver en Lista de comprensiones, se asigna una lista a una variable. Veamos un ejemplo, primero, podemos considerar un método para encontrar el cuadrado de un número usando un bucle:
Código:
numbers = (2, 5, 3, 7) square = () for n in numbers:
square.append(n**2)
print(square)
Salida:
Ahora, consideremos hacer lo mismo, pero usando List Comprehensions en lugar de un bucle:
Código:
numbers = (2, 5, 3, 7) square = (n**2 for n in numbers) print(square)
Salida:
Aquí, puede ver que los corchetes "()" se usan para denotar que la salida de expresión dentro de ellos es una lista.
Lista de comprensiones y funciones de Lambda
Debe tener en cuenta que las comprensiones de listas no son la única forma de crear listas, Python tiene muchas funciones incorporadas y funciones lambda que se pueden usar, como:
Código:
letters = list(map(lambda x: x, 'human'))
print(letters)
Salida:
Si bien esto funciona en muchos casos, las comprensiones de listas son mejores en cuanto a legibilidad y son más fáciles de entender por alguien que no es el programador del código.
Agregar condicionales en listas de comprensiones
Usted es libre de usar cualquier condicional necesario dentro de una comprensión de la lista para modificar la lista existente. Echemos un vistazo a un ejemplo que usa condicionales:
Código:
numbers_list = ( x for x in range(20) if x % 2 == 0) print(numbers_list)
Salida:
Aquí hay otro ejemplo:
Código:
numbers_list = (x for x in range(100) if x % 2 == 0 if x % 5 == 0) print(numbers_list)
Salida:
Uso de bucles anidados en las comprensiones de listas
Cuando sea necesario, podemos usar bucles anidados en las comprensiones de listas, echemos un vistazo a cómo podemos usar bucles anidados de esta manera al encontrar la transposición de una matriz:
Código:
transposedmatrix = () matrix = ((1, 2, 3, 4), (4, 5, 6, 8)) for i in range(len(matrix (0))):
transposedmatrix_row = () for row in matrix:
transposedmatrix_row.append(row(i))
transposedmatrix.append(transposedmatrix_row)
print(transposedmatrix)
Salida:
Ejemplos de Python de comprensiones de listas
A continuación se muestran los ejemplos de Python de comprensión de listas:
Ejemplo # 1 - Eliminar vocales de una oración dada
Código:
def eg_for(sentence):
vowels = 'aeiou'
filter_list = () for l in sentence:
if l not in vowels:
filter_list.append(l)
return ''.join(filter_list)
def eg_lc(sentence):
vowels = 'aeiou'
return ''.join(( X for X in sentence if X not in vowels))
Now, let's define the matrix, run the program and then check-out the results:
sentence = "hello from the other side"
print ("loop result: " + eg_for(sentence))
print ("LC result: " + eg_lc(sentence))
Salida:
Ejemplo # 2 - Mapeo de nombres de países con sus capitales
Código:
country = ( 'India', 'Italy', 'Japan' ) capital = ( 'Delhi', 'Rome', 'Tokyo' ) output_dict = ()
# Using loop for constructing dictionary
for (key, value) in zip(country, capital):
output_dict(key) = value
print("Output Dictionary using for loop:", output_dict)
Salida:
Ventajas de las comprensiones de listas Python
Uno puede pensar que si se pueden usar bucles para hacer casi todo lo que hacen las comprensiones de listas, ¿por qué usarlas en primer lugar? Bueno, la respuesta está en la velocidad y el tiempo que lleva hacer la tarea y la cantidad de memoria necesaria. Cuando se realiza una comprensión de la lista, ya estamos reduciendo 3 líneas de código en una y cuando se hace, el código es mucho más rápido que cuando se enfrenta a una comprensión de la lista, python asigna primero la memoria para la lista y luego agrega elementos dentro de ella. Además, es sin duda una forma más elegante y sofisticada de crear listas basadas en listas preexistentes.
Conclusión
Ahora que hemos tenido algo de experiencia con la comprensión de listas, es fácil entender cómo nos permiten transformar una lista en una nueva. Estos tienen una sintaxis simple que limita la cantidad de trabajo necesario para crear una lista. Teniendo en cuenta que la sintaxis y la estructura de las comprensiones de listas es básicamente como una notación de generador de conjuntos, estas se convierten en una segunda naturaleza para los programadores rápidamente y aseguran que una vez que el código se entregue a otra persona para mantenerlo y ampliarlo, sea fácil de entender y trabajar con.
Artículo recomendado
Esta es una guía para la lista de comprensiones Python. Aquí discutimos las comprensiones de la lista y las funciones lambda junto con la implementación y salida del código. También puede consultar nuestros otros artículos sugeridos para obtener más información:
- Destructor en Python con ventajas
- Hacer un bucle en Python con diagrama de flujo
- Matriz de cadenas en Python con métodos
- ¿Qué es AWS Lambda Layers?
- Tipos de datos PL / SQL
- Matriz de cadenas en JavaScript
- Diferentes tipos de datos SQL con ejemplos
- Guía completa de matriz de cuerdas