Este post fue hecho público como parte del Blogatón de ciencia de datos
Introducción
En este post, estudiaremos las listas por comprensión de Python y la forma de usarlas. Los temas que discutiremos en este post son los siguientes:
- ¿Cuál es la diferencia entre List Comprehension y For loop en Python?
- Sintaxis de las comprensiones de listas en Python
- Diferencia entre funciones Lambda y comprensiones de listas
- Condicionales dentro de la comprensión de listas
- Bucles anidados dentro de la lista de comprensiones en Python
- Puntos clave sobre la comprensión de listas
- Más ejemplos de comprensión de listas
Fuente de la imagen: Google Images
¿Cuál es la diferencia entre la comprensión de listas y el bucle for en Python?
Supongamos que anhelamos separar las letras de la palabra «análisis» y agregar las letras como ítems de una lista. Lo principal que me viene a la mente sería utilizar for loop.
Ejemplo 1: uso del bucle For para iterar por medio de una cadena
separated_letters = [] for letter in 'analytics': separated_letters.append(letter) print(separated_letters)
Producción:
[ 'a', 'n', 'a', 'l', 'y', 't', 'i', 'c', 's' ]
Explicación del código:
En este ejemplo, dividiremos la cadena en función de los caracteres y almacenaremos todos esos caracteres en una nueva lista.
A pesar de esto, Python dispone de una mejor manera de solucionar este problema usando List Comprehension. La comprensión de listas es una manera sublime de establecer y hacer listas sustentadas en listas existentes.
Veamos cómo se puede escribir el programa anterior usando listas por comprensión.
Ejemplo 2: uso de la comprensión de listas para iterar por medio de una cadena
separated_letters = [ letter for letter in 'analytics' ] print( separated_letters)
Producción:
[ 'a', 'n', 'a', 'l', 'y', 't', 'i', 'c', 's' ]
Explicación del código:
En el ejemplo anterior, se asigna una lista nueva a las variables separadas_letras, y la lista contiene las cosas de la cadena iterable ‘análisis’. Para terminar, para recibir la salida, llamamos al impresión() función de Python.
Sintaxis de la comprensión de listas
[expression for item in list]
Ahora, podemos identificar dónde se usan las listas por comprensión.
Si se dio cuenta, «análisis» podría ser una cadena, no una lista. Esta es a menudo la facilidad de comprensión de listas. Puede identificar cuándo recibe una cadena o una tupla y trabaja en eso como una lista.
Puedes probar esto usando bucles. A pesar de esto, no todos los bucles pueden reescribirse como una lista de comprensión. Pero a medidaLa "medida" es un concepto fundamental en diversas disciplinas, que se refiere al proceso de cuantificar características o magnitudes de objetos, fenómenos o situaciones. En matemáticas, se utiliza para determinar longitudes, áreas y volúmenes, mientras que en ciencias sociales puede referirse a la evaluación de variables cualitativas y cuantitativas. La precisión en la medición es crucial para obtener resultados confiables y válidos en cualquier investigación o aplicación práctica.... que aprenda y se sienta cómodo con las listas por comprensión, terminará reemplazando más y más bucles con esta elegante sintaxis.
Lista comprensiones vs funciones Lambda
Para trabajar o realizar operaciones con las listas, las listas por comprensión no son la única forma, pero varias herramientas integradas y funciones lambda pueden crear y modificar listas en menos líneas de código.
Ejemplo 3: uso de funciones Lambda dentro de List
letters = list(map(lambda y: y, 'analytics')) print(letters)
Producción:
[ 'a', 'n', 'a', 'l', 'y', 't', 'i', 'c', 's' ]
Explicación del código:
En este código, separaremos los caracteres de la cadena usando funciones lambda.
A pesar de esto, en general, las listas por comprensión son más legibles por humanos que las funciones lambda. Es más fácil comprender lo que el programador estaba tratando de lograr cuando se usan listas por comprensión.
Condicionales en la comprensión de listas
Las listas por comprensión pueden usar declaraciones condicionales para cambiar las listas existentes (u otras tuplas). vamos a crear una lista que use operadores matemáticos, enteros y rango ().
Ejemplo 4: Utilizar if con comprensión de listas
even_list = [ i for i in range(10) if i % 2 == 0] print(even_list)
Producción:
[0, 2, 4, 6, 8]
Explicación del código:
La lista, even_list, se completará con las cosas en el rango de 0 a 9 si el valor del elemento es divisible por 2.
Ejemplo 5: anidado si con comprensión de listas
filtered_list = [ x for x in range(50) if x % 2 == 0 if x % 5 == 0] print(filtered_list)
Producción:
[0, 10, 20, 30, 40]
Explicación del código:
Aquí, enumere las comprobaciones de comprensión:
¿Es x divisible por 2 o no?
¿Es x divisible por 5 o no?
Si x satisface ambas condiciones, x se agrega a lista_filtrada.
Ejemplo 6: if … else con comprensión de listas
list = ["even" if y%2==0 else "odd" for y in range(5)] print(list)
Producción:
['even', 'odd', 'even', 'odd', 'even']
Explicación del código:
Aquí, la comprensión de la lista verificará los cinco números del 0 al 4. Si y es divisible por 2, se agrega par a la lista de obj. Si no es así, se agrega impar.
Bucles anidados en la comprensión de listas
Supongamos que nos gustaría calcular la transposición de una matriz que necesita un bucle for anidado. Veamos cómo se hace usando el bucle for normal primero.
Ejemplo 7: hallar la transposición de matriz usando bucles anidados
transposed_matrix = [] matrix = [[1, 2, 3, 4], [4, 5, 6, 8]] for i in range(len(matrix[0])): transposed_row = [] for row in matrix: transposed_row.append(row[i]) transposed_matrix.append(transposed_row) print(transposed_matrix)
Producción:
[[1, 4], [2, 5], [3, 6], [4, 8]]
Explicación del código:
El código anterior utiliza dos bucles for para buscar la transposición de la matriz.
Al mismo tiempo, podemos hacer iteraciones anidadas dentro de una lista de comprensión. En esta sección, vamos a hallar la transposición de una matriz usando un ciclo anidado dentro de una lista de comprensión.
Ejemplo 8: Hallar la transposición de una matriz a través de la comprensión de listas
matrix = [[1, 2], [3,4], [5,6], [7,8]] transpose_matrix = [[row[i] for row in matrix] for i in range(2)] print (transpose_matrix)
Producción:
[[1, 3, 5, 7], [2, 4, 6, 8]]
Explicación del código:
En el programa anterior, tenemos una matriz variableEn estadística y matemáticas, una "variable" es un símbolo que representa un valor que puede cambiar o variar. Existen diferentes tipos de variables, como las cualitativas, que describen características no numéricas, y las cuantitativas, que representan cantidades numéricas. Las variables son fundamentales en experimentos y estudios, ya que permiten analizar relaciones y patrones entre diferentes elementos, facilitando la comprensión de fenómenos complejos.... que tiene 4 filas y un par de columnas. Necesitamos buscar la transposición de la matriz. Para eso, usamos la comprensión de listas.
Puntos clave en la comprensión de listas
Los puntos clave que debemos prestar atención al trabajar con la comprensión de listas son los siguientes:
- La comprensión de listas es una sublime camino para establecer y construir listas con la ayuda de listas existentes.
- En comparación con las funciones y los bucles normales, la comprensión de listas es usualmente más compacto y rápido para crear listas.
- A pesar de esto, siempre deberíamos Evite escribir listas comprensivas muy largas en una línea. para confirmar ese código es fácil de utilizar.
- Recuerde, cada lista de comprensión es reescrito en el bucle for, pero todos los bucles for no se pueden reescribir dentro de mas o menos comprensión de listas.
Más ejemplos de comprensiones de listas
Veamos algunos ejemplos más relacionados con la comprensión de listas para que tenga una mejor comprensión de las comprensiones de listas en Python.
Ejemplo 9: Hallar los ítems en una lista en la que los ítems terminan con la letra ‘b’ y la longitud de ese elemento es mayor que 2
names = ['Ch','Dh','Eh','cb','Tb','Td','Chb','Tdb'] final_names = [name for name in names if name.lower().endswith('b') and len(name) > 2] final_names
Producción:
['Chb', 'Tdb']
Explicación del código:
En el código anterior, usamos la comprensión de listas con algunas condiciones asociadas. Las funciones involucradas en las condiciones son las siguientes:
- nombre. lower.endswith (‘b’): Esta función filtra todas las cadenas de la lista que terminan con las letras ‘b’ o ‘B’.
- len (nombre): Esta función encuentra la longitud de todos los ítems en una lista especificada.
Ejemplo 10: invertir cada cadena en una tupla
# Reverse each elements in a specified tuple List = [string[::-1] for string in ('Hello', 'Analytics', 'Vidhya')] # Display the list print(List)
Producción:
[ 'olleH', 'scitylanA', 'ayhdiV' ]
Explicación del código:
En el código anterior, usamos el concepto de cortar en una cadena, por eso, al utilizar str[::-1] función, podemos invertir los ítems de una cadena, y aplicamos esta función a cada elemento en la tupla usando la comprensión de lista.
¡Esto termina nuestra discusión!
Notas finales
Espero que hayas disfrutado el post.
Si deseas conectarte conmigo, no dudes en ponerte en contacto conmigo. por Email.
Tus sugerencias y dudas son bienvenidas aquí en la sección de comentarios. ¡Gracias por leer mi post!
Los medios que se muestran en este post no son propiedad de DataPeaker y se usan a discreción del autor.