10 ejemplos de comprensiones de listas maestras en Python

Contenidos

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

Uno No Simplemente Meme - Imgflip |  Lista de comprensiones en Python

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 medida 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 variable 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.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.