Lista de comprensión en Python - con ejemplos
Publicado: 2022-02-18En Python, la comprensión de listas lo ayuda a crear nuevas listas a partir de iterables existentes, como listas, cadenas y tuplas.
Su sintaxis sucinta 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 usando bucles
for
, - La sintaxis para usar listas de comprensión en Python, y
- Cómo modificar las comprensiones de lista con la instrucción condicional
if
.
Además, también codificará varios ejemplos que lo ayudarán a comprender mejor las listas de comprensión.
Sumerjámonos.
Cómo crear listas de Python usando bucles for
Suponga que tiene una lista de números nums
. Y le gustaría crear otra lista que contenga el cubo de todos los números en nums
. Así es como lo hará usando un bucle for
en Python:
nums = [2,3,5,7] num_cubes = [] for num in nums: num_cubes.append(num**3) print(num_cubes) # Output [8, 27, 125, 343]
En el código anterior, tenemos los siguientes pasos:
- Inicialice una lista vacía
num_cubes
. -
nums
la lista de números. - Acceda a cada número
num
y calcule su cubo usando el operador de exponenciación:num**3
. - Finalmente, agregue el valor al cubo a la lista
num_cubes
Nota: En Python, el operador de exponenciación
**
se usa con la sintaxis:num**pow
: el númeronum
se eleva a la potenciapow
.
Sin embargo, puede hacer esto más fácilmente usando la comprensión de listas en Python. Procedamos a aprender su sintaxis.
Sintaxis de comprensión de listas de Python
La sintaxis general para la comprensión de listas se muestra a continuación.
<new_list> = [<expression> for <item> in <iterable>]
Analicemos la sintaxis anterior.
- En Python, las listas están delimitadas por un par de corchetes
[]
; por lo tanto, debe encerrar la declaración de comprensión de la lista dentro de[]
. -
<item>
en<iterable>
significa que está recorriendo un iterable. Cualquier objeto de Python que pueda recorrer y acceder a elementos individuales, como listas, tuplas y cadenas, es iterable. -
<expression>
es el resultado que le gustaría calcular para cada<item>
en<iterable>
.
Y esto suena simple, ¿sí?
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 a continuación.

Ahora que ha aprendido la sintaxis, es hora de comenzar a codificar. Puede usar 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 de Python
En la sección anterior, creó una nueva lista num_cubes
from nums
. Comencemos reescribiendo eso usando la comprensión de listas.
Uso de la comprensión de listas con números
Ahora usemos la sintaxis simplificada de la siguiente manera:
-
<do-this>
: Aquí, tienes que elevar al cubo cadanum
. Entonces reemplace<do-this>
connum**3
. -
<all-items>
: la variable de bucle esnum
: los números individuales de la lista. -
<this-list>
: La lista existente que tenemos esnums
. - Y
[num**3 for num in nums]
es la expresión final.
Poniéndolo todo junto, tenemos el siguiente fragmento de código:
num_cubes = [num**3 for num in nums] print(num_cubes) # Output [8, 27, 125, 343]
Felicitaciones, ha codificado su primera lista de comprensión.
Continuando, trabajemos con cadenas de Python.
Uso de la comprensión de listas con cadenas
Supongamos que tiene la lista de authors
; puede volver a escribir la lista a continuación con sus autores favoritos.
authors = ["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 darles formato en mayúsculas y minúsculas y almacenarlos en una nueva lista llamada author_list
.
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:
First-name Last-name
Así que esto es todo lo que necesitas hacer:
- recorrer la lista de
authors
y para cadaauthor
en la lista, - llame a
author.title()
para obtener una copia de la cadena en mayúsculas y minúsculas.
Y el código de Python para esto se muestra a continuación:
authors = ["jane austen","george orwell","james clear","cal newport"] author_list = [author.title() for author in authors] print(author_list) # Output ['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']
En el resultado anterior, observe cómo se formatearon los nombres de todos los autores en el caso del título, que es lo que queríamos.

Uso de la comprensión de listas con varias listas
Hasta ahora, ha aprendido a usar la comprensión de listas para crear nuevas listas a partir de una lista existente. Ahora aprendamos cómo 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 area
de lista que incluya el área de estos 4 rectángulos. Recuerda, area = length * breadth
.
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 puedes hacerlo usando 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)
. Luego 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[0]
y b_arr[0]
, la tupla 1
contiene l_arr[1]
y b_arr[1]
, 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(area) # Output [8,5,7,27]
En la siguiente sección, aprenderá a usar sentencias condicionales dentro de una lista de comprensión.
Comprensión de lista de Python con sintaxis de condición
Empecemos construyendo sobre la sintaxis anterior para la comprensión de listas.
Aquí está la sintaxis:
<new_list> = [<expression> for <item> in <iterable> if <condition>]
En lugar de calcular la <expression>
para todos los elementos, solo le gustaría hacerlo para aquellos elementos que satisfagan una <condition>
específica, donde, condition := True
. Y esto conduce a una sintaxis simplificada como se muestra:

Con eso, pasemos a los ejemplos de código.
Comprensión de listas de Python con ejemplos de condiciones
#1. Se le da la cadena "Estoy aprendiendo Python en 2022" . Le gustaría obtener una lista de todos los dígitos en esta cadena. Entonces, ¿cómo lo haces?
En Python,
<char>.isdigit()
actúa sobre un carácter<char>
y devuelveTrue
si es un dígito (0-9); de lo contrario, devuelveFalse
.
El fragmento de código a continuación muestra cómo puede recopilar la lista de todos los dígitos en la cadena str1
.
str1 = "I'm learning Python3 in 2022" digits = [char for char in str1 if char.isdigit()] print(digits) # Output ['3', '2', '0', '2', '2']
En el código anterior:
- recorres la cadena
str1
, - acceda a cada
char
para verificar si es un dígito usando el métodoisdigit()
, y - agregue
char
a la nueva lista dedigits
solo si es un dígito.
Tomemos otro ejemplo.
#2. Tienes una lista de frutas. Y le gustaría crear una lista que starts_with_b
con b que contenga todas las frutas de la lista de fruits
que comiencen con b
. Puede usar el método startswith()
para escribir la condición.
El
<str>.startswith('char')
devuelveTrue
si <str> comienza con 'char'; de lo contrario, devuelveFalse
.
fruits = ['blueberry','apple','banana','orange','cherry'] starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')] print(starts_with_b) # Output ['blueberry', 'banana']
En el resultado anterior, obtenemos 'blueberry'
y 'banana'
que son las dos frutas que comienzan con 'b'
en la lista de fruits
, como esperábamos.
Y eso concluye nuestra discusión sobre la comprensión de listas.
Conclusión
Espero que este tutorial te haya ayudado a comprender la comprensión de listas en Python.
Resumamos:
- Puede usar [<do this> for <all-items> in <this-list>] para crear una nueva lista usando la comprensión de lista.
- Además, puede usar la sintaxis [<hacer esto> para <todos los elementos> en <esta-lista> si <la condición es verdadera>] con la declaración condicional
if
.
Además, también ha codificado varios ejemplos. Como siguiente paso, puede intentar reescribir algunos de sus bucles de Python existentes para la creación de listas mediante 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.