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-el
númeronum
se eleva a la potenciapow
.
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.
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 cadanum.
Así que sustituya<hacer-esto>
pornum**3
.<todos los elementos>:
La variable de bucle esnum-los
números individuales de la lista.<esta-lista>:
La lista existente que tenemos esnums
.- 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 cadaautor
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 sintaxiszip(*iterables)
. A continuación, devuelve un iterador de tuplas, donde la tuplai
contiene el elementoi
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.
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:
▶ 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 devuelveTrue
si es un dígito (0-9); en caso contrario devuelveFalse
.
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étodoisdigit()
, y - añade
el char
a la nueva listadigits
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')
devuelveTrue
siempieza 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 para crear una nueva lista utilizando la comprensión de listas.en ] - 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.