Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Lista de comprensión en Python - con ejemplos

comprensión de la lista de Python
Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

En 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 for bucles,
  • La sintaxis para usar listas de comprensión en Python, y
  • Cómo modificar listas de comprensión con if sentencia condicional.

Además, también codificará varios ejemplos que lo ayudarán a comprender mejor las listas de comprensión.

Vamos a sumergirnos.🌊

How to Create Python Lists Using for Loops

Supongamos 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 for bucle 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:

  • Inicializar una lista vacía num_cubes.
  • Recorre el nums lista.
  • Accede 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 utiliza con la sintaxis: num**pow-el número num es elevado al poder pow.

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

Python List Comprehension Syntax

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 cuadrado soportes []—por lo tanto, debe incluir la declaración de comprensión de la lista dentro [].
  • <item> in <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 la salida que le gustaría calcular para cada <item> en el capítulo respecto a la <iterable>.

Y esto suena simple, ¿sí?

En esencia, le gustaría do algo para todos artículos en el -- (o cualquier iterable) para obtener un lista nueva.

Usando esto, podemos simplificar la sintaxis, como se muestra en la imagen a continuación.

lista-comprensión-sintaxis
Sintaxis de comprensión de lista de Python (Imagen del autor)

Ahora que ha aprendido la sintaxis, es hora de comenzar a codificar. Puedes usar El IDE de Python en línea de Geekflare para seguir con estos ejemplos. O puede ejecutarlos en su máquina local.

Python List Comprehension Examples

En la sección anterior, creó una nueva lista num_cubes desde 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 cubo cada uno num. Así que reemplaza <do-this> a num**3.
  • <all-items>: La variable de bucle es num: los números individuales de la lista.
  • <this-list>: La lista existente que tenemos es nums.
  • 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, codificaste tu 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 authors —puedes reescribir la lista a continuación con tus 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 formatearlas en el título caso y almacenarlos en una nueva lista llamada author_list.

Nota: En Python, el método de cadena título() 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:

  • bucle a través de la authors lista y para cada author en la lista,
  • llamar al author.title() para obtener una copia en mayúsculas y minúsculas de la cadena.

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 contiene las longitudes y anchuras de 4 rectángulos.

Y necesitas crear una nueva lista. area que incluye el área de estos 4 rectángulos. Recordar, 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 Python zip() función.

Nota: En Python, el zip() La función toma uno o más iterables como argumentos con la sintaxis zip(*iterables). Luego 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. Tienes 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], tupla 1 contiene l_arr[1] y b_arr[1], Y así sucesivamente.

python-zip-función
Función Python zip() (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(area)

# Output
[8,5,7,27]

En la siguiente sección, aprenderá cómo usar declaraciones condicionales dentro de una lista de comprensión.

Python List Comprehension with Condition Syntax

Empecemos construyendo sobre la sintaxis anterior para la comprensión de listas.

Esta es la sintaxis:

<new_list> = [<expression> for <item> in <iterable> if <condition>]

En lugar de calcular el <expression> para todos los artículos, solo le gustaría hacerlo para aquellos artículos que satisfagan un específico <condition>-donde, condition := True. Y esto conduce a una sintaxis simplificada como se muestra:

lista-comprensión-con-condición-sintaxis
Comprensión de lista de Python con sintaxis de condición (Imagen del autor)

▶ Con eso, pasemos a ejemplos de código.

Python List Comprehension with Condition Examples

#1. Te dan la cuerda “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 personaje <char> y devoluciones True si es un dígito (0-9); de lo contrario vuelve False.

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 cuerda str1,
  • acceder a cada char para verificar si es un dígito usando el isdigit() método, y
  • add char a la nueva lista digits sólo si es un dígito.

Tomemos otro ejemplo.

#2. Tienes una lista de frutas.🍊 Y te gustaría crear una lista starts_with_b que contiene todos los frutos de la fruits lista que comienza con b. Puede utilizar el startswith() método para escribir la condición.

La <str>.startswith('char') devoluciones True Si comienza con 'char'; de lo contrario vuelve False.

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 la salida anterior, obtenemos 'blueberry' y 'banana' cuales son las dos frutas que empiezan con 'b' en el capítulo respecto a la fruits lista, 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:

  • Puedes usar [ por en ] para crear una nueva lista utilizando la comprensión de listas.
  • Además, puede utilizar la sintaxis [ por en Si ] con el if sentencia condicional.

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 cómo manejar archivos en Python.

Gracias a nuestros patrocinadores
Más lecturas interesantes sobre el desarrollo
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder