En Python, las comprensiones de listas le ayudan a crear nuevas listas a partir de iterables existentes, como listas, cadenas y tuplas.

Su sucinta sintaxis le permite crear nuevas listas en una sola línea de código. Y este tutorial le enseñará cómo puede hacerlo.

En los próximos minutos, aprenderá

  • Cómo crear una nueva lista utilizando bucles for,
  • La sintaxis para utilizar comprensiones de listas en Python, y
  • Cómo modificar las comprensiones de lista con la sentencia condicional if.

Además, también codificará varios ejemplos que le ayudarán a entender mejor las comprensiones de listas.

Sumerjámonos en ello.🌊

Cómo crear listas en Python utilizando bucles for

Suponga que tiene una lista nums de números nums. Y le gustaría crear otra lista que contenga el cubo de todos los números de nums. He aquí cómo hacerlo utilizando un bucle for en Python:

nums = [2,3,5,7]
num_cubes = []
para num en nums
  num_cubes.append(num**3)

print(num_cubos)

# Salida
[8, 27, 125, 343]

En el código anterior, tenemos los siguientes pasos:

  • Inicializar una lista vacía num_cubos.
  • Recorrer en bucle la lista num_cubos.
  • Acceda a cada número num, y calcule su cubo utilizando el operador de exponenciación: num**3.
  • Finalmente, añada el valor cubicado a la lista num_cubos

Nota: En Python, el operador de exponenciación ** se utiliza con la sintaxis: num**pow-elnúmero num se eleva a la potencia pow.

Sin embargo, puede hacer esto más fácilmente utilizando la comprensión de listas en Python. Procedamos a aprender su sintaxis.

Sintaxis de la comprensión de listas en Python

La sintaxis general para la comprensión de listas se muestra a continuación.

<nueva_lista> = [<expresión> para <elemento> en <iterable>]

Analicemos la sintaxis anterior.

  • En Python, las listas están delimitadas por un par de corchetes []-por lo que necesita encerrar la sentencia de comprensión de lista dentro de [].
  • <item> en <iterable> significa que está haciendo un bucle a través de un iterable. Cualquier objeto de Python que pueda recorrer en bucle y acceder a elementos individuales -como listas, tuplas y cadenas- son iterables.
  • <expresión> es la salida que le gustaría calcular para cada <elemento> en el <iterable>.

Y esto suena sencillo, ¿verdad?

En esencia, le gustaría hacer algo para todos los elementos de la lista (o cualquier iterable) para obtener una nueva lista.

Usando esto, podemos simplificar la sintaxis, como se muestra en la imagen de abajo.

list-comprehension-syntax
Sintaxis de comprensión de listas en Python (Imagen del autor)

Ahora que ha aprendido la sintaxis, es hora de empezar a codificar. Puede utilizar el IDE de Python en línea de Geekflare para seguir estos ejemplos. O puede ejecutarlos en su máquina local.

Ejemplos de comprensión de listas en Python

En la sección anterior, creó una nueva lista num_cubes a partir de nums. Empecemos por reescribirla utilizando la comprensión de listas.

Uso de la comprensión de listas con nums

Ahora vamos a utilizar la sintaxis simplificada de la siguiente manera:

  • <hacer esto>: Aquí tiene que cubicar cada num. Así que sustituya <hacer-esto> por num**3.
  • <todos los elementos>: La variable de bucle es num-losnúmeros individuales de la lista.
  • <esta-lista>: La lista existente que tenemos es nums.
  • Y [num**3 para num en nums] es la expresión final. ✅

Juntándolo todo, tenemos el siguiente fragmento de código:

num_cubos = [num**3 para num en nums]
print(num_cubos)

# Salida
[8, 27, 125, 343]

Enhorabuena, ha codificado su primera comprensión de listas.🎉

Sigamos adelante, trabajemos con cadenas de Python.

Usando la comprensión de listas con cadenas

Supongamos que tiene la lista autores -puede reescribir la lista de abajo con sus autores favoritos.😄

autores = ["jane austen", "george orwell", "james clear", "cal newport"]

Observe cómo los nombres de los autores están en minúsculas en la lista anterior. Ahora nos gustaría formatearlos en mayúsculas y almacenarlos en una nueva lista llamada lista_de_autores.

Nota: En Python, el método de cadena title() acepta una cadena como argumento y devuelve una copia de la cadena formateada en el caso del título. Es decir, la primera letra de cada palabra está en mayúscula: Nombre Apellido

Esto es todo lo que tiene que hacer

  • recorrer la lista de autores y para cada autor de la lista
  • llame a author.title() para obtener una copia de la cadena en mayúsculas.

Y el código Python para esto se muestra a continuación:

autores = ["jane austen", "george orwell", "james clear", "cal newport"]

author_list = [author.title() for author in authors]
print(lista_de_autores)

# Salida
['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']

En la salida anterior, observe cómo los nombres de todos los autores se han formateado en el caso del título, que es lo que queríamos.

Uso de la comprensión de listas con listas múltiples

Hasta ahora, ha aprendido a utilizar la comprensión de listas para crear nuevas listas a partir de una lista existente. Ahora vamos a aprender a crear una nueva lista a partir de varias listas.

Por ejemplo, considere este problema: Tiene dos listas l_arr y b_arr que contienen las longitudes y anchuras de 4 rectángulos.

Y necesita crear una nueva lista área que incluya el área de estos 4 rectángulos. Recuerde, área = longitud * anchura.

l_arr = [4,5,1,3]
b_arr = [2,1,7,9]

Necesitará elementos de ambas listas(l_arr y b_arr) para calcular el área. Y puede hacerlo utilizando la función zip() de Python.

Nota: En Python, la función zip () toma uno o más iterables como argumentos con la sintaxis zip(*iterables). A continuación, devuelve un iterador de tuplas, donde la tupla i contiene el elemento i de cada uno de los iterables.

La siguiente imagen describe esto en detalle. Tiene 4 valores en l_arr y b_arr, por lo que el rango de índices es de 0 a 3. Como puede ver, la tupla 0 contiene l_arr<x>[0]</x> y b_arr <x>[0]</x>, la tupla 1 contiene l_arr<x>[1]</x> y b_arr<x>[1]</x>, y así sucesivamente.

python-zip-function
Función zip() de Python (Imagen del autor)

Por lo tanto, puede recorrer zip(l_arr,b_arr) como se muestra a continuación:

area = [l*b for l,b in zip(l_arr,b_arr)]
print(área)

# Salida
[8,5,7,27]

En la siguiente sección, aprenderá a utilizar sentencias condicionales dentro de una comprensión de lista.

Comprensión de listas en Python con sintaxis condicional

Empecemos basándonos en la sintaxis anterior para la comprensión de listas.

Aquí está la sintaxis:

<nueva_lista> = [<expresión> para <elemento> en <iterable> if <condición>]

En lugar de calcular la <expresión> para todos los elementos, le gustaría hacerlo sólo para aquellos elementos que satisfagan una <condición>específica, donde, condición := True. Y esto conduce a una sintaxis simplificada como se muestra:

list-comprehension-with-condition-syntax
Comprensión de listas en Python con sintaxis de condición (Imagen del autor)

▶ Con esto, procedamos a los ejemplos de código.

Ejemplos de Comprensión de Listas en Python con Condición

#1. Se le da la cadena «Estoy aprendiendo Python en 2022». Le gustaría obtener una lista de todos los dígitos de esta cadena. ¿Cómo lo hace?

En Python, <char>.isdigit() actúa sobre un carácter <char> y devuelve True si es un dígito (0-9); en caso contrario devuelve False.

El fragmento de código siguiente muestra cómo puede obtener la lista de todos los dígitos de la cadena str1.

str1 = "Estoy aprendiendo Python3 en 2022"

digits = [char for char in str1 if char.isdigit()]

print(digits)

# Salida
['3', '2', '0', '2', '2']

En el código anterior

  • se recorre en bucle la cadena str1
  • accede a cada char para comprobar si es un dígito utilizando el método isdigit(), y
  • añade el char a la nueva lista digits sólo si es un dígito.

Tomemos otro ejemplo.

#2. Tiene una lista de frutas.🍊 Y le gustaría crear una lista starts_with_b que contenga todas las frutas de la lista de frutas que empiecen por b. Puede utilizar el método startswith () para escribir la condición.

El método <str>.startswith('char') devuelve True si empieza por ‘char’; en caso contrario devuelve False.

fruits = ['arándano','manzana','plátano','naranja','cereza']

empieza_con_b = [fruta para fruta en frutas si fruta.empieza_con('b')]

print(empieza_con_b)

# Salida
['arándano', 'plátano']

En la salida anterior, obtenemos ‘arándano ' y ‘ plátano ‘ que son las dos frutas que empiezan por 'b ‘ en la lista de frutas, como esperábamos.

Y con esto terminamos nuestra discusión sobre la comprensión de listas.

Conclusión

Espero que este tutorial le haya ayudado a entender la comprensión de listas en Python.

Resumamos:

  • Puede utilizar [ para en ] para crear una nueva lista utilizando la comprensión de listas.
  • Además, puede utilizar la sintaxis [ for in if ] con la sentencia condicional if.

Además, también ha codificado varios ejemplos. Como siguiente paso, puede intentar reescribir algunos de sus bucles Python existentes para la creación de listas utilizando la comprensión de listas. ¡Feliz codificación! Hasta el próximo tutorial.😄

Ahora puede ver cómo convertir una lista en un diccionario o aprender a manejar archivos en Python.