• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal
  • Saltar al pie de página

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Criptografía
  • Python
  • Matlab
  • R
  • Herramientas
  • Tienda

Listas por comprensión en Python

septiembre 23, 2019 Por Daniel Rodríguez Deja un comentario

Las listas por comprensión es una construcción sintáctica disponible en Python con la que se pueden crear lista a partir de otros elementos iterables. Siendo una de las contracciones más elegantes del lenguaje. A continuación, se mostrará la sintaxis básica para trabajar con las listas por comprensión.

Sintaxis de las listas por comprensión en Python

Las sintaxis básicas de las listas por comprensión en Python se pueden resumir en la siguiente línea:

nueva_lista = [expresion bucle_for condiciones]

Entre corchetes se escribe una expresión seguida de un bucle for sobre el que se itera, para finalmente escribir unas condiciones.

Ejemplo básico de uso

Un ejemplo básico de uso de las listas por comprensión es aplicar una operación sobre un vector. Por ejemplo, añadir una cantidad a todos los elementos de este. Lo que se puede hacer con un bucle tradicional

numbers = [1, 2, 3, 4]
results = []

for n in numbers:
    results.append(n + 1)
    
results
[2, 3, 4, 5]

Aunque es más elegante utilizar las listas por comprensión

numbers = [1, 2, 3, 4]
results = [n + 1 for n in numbers]

Obteniéndose el mismo resultado solamente con mucho menos código. En el código los corchetes indican que la salida de la lista n + 1 es la expresión que ejecutar para cada uno de los elementos del bucle for. Es decir, que a cada uno de los valores sobre los que se itera se añada se le sume la unidad.

Condiciones en las listas por comprensión

Tal como se ha indicado anteriormente es posible añadir condiciones a las listas por comprensión en Python. Para lo que solemne se tiene que agregar un if al final con la condición. Siguiendo con el ejemplo anterior, se podría sumar uno solamente a los registros que sean menores que tres.

numbers = [1, 2, 3, 4]
results = [n + 1 for n in numbers if n < 3]
results
[2, 3]

Al ejecutar el código se puede observar que solamente se tienen dos registros, los que cumple la condición. En el caso de que se desee realizar una operación diferente cuando no se cumple la condición se puede hacer con un else. Aunque es necesario cambiar modificar el orden. Si se utiliza un else la condición se tiene que situar justamente después de la expresión y antes del for. Por ejemplo, en el siguiente código los números mayores o iguales que tres se dejan sin modificar.

numbers = [1, 2, 3, 4]
results = [n + 1 if n < 3 else n for n in numbers]
results
[2, 3, 3, 4]

Identificar los numero comunes en dos listas

La posibilidad de anidar bucles for en las listas por comprensión permiten realizar operaciones realmente completadas. Así se puede iterar sobre varios objetos iterables para aplicar una condición.

Un ejemplo típico de esto es buscar el conjunto de elementos comunes en dos listas. Lo que se puede conseguir de con el siguiente código.

names_1 = ['Oralie' ,'Imojean' ,'Michele', 'Ailbert', 'Stevy']
names_2 = ['Jayson', 'Oralie' ,'Michele', 'Stevy', 'Alwyn']

common = [a for a in names_1 for b in names_2 if a == b]
common
['Oralie', 'Michele', 'Stevy']

En donde se selecciona el valor de la primera lista si al iterar sobre la segunda también se encuentra en esta. Si no aparece el registro de ignorará. Para hacer esto mismo con un bucle for tradicional es necesario escribir mucho más código.

list_a = ['Oralie' ,'Imojean' ,'Michele', 'Ailbert', 'Stevy']
list_b = ['Jayson', 'Oralie' ,'Michele', 'Stevy', 'Alwyn']
common = []

for a in names_1:
    for b in names_2:
        if a == b:
            common.append(a)

Conclusiones

En esta entrada se han visto las listas por comprensión en Python, una construcción sintáctica disponible que ofrece grandes posibilidades. Permitiendo crear código más compacto y legible.

Las listas por comprensión son otra de las herramientas disponibles en Python que permite crear código compacto y elegante. Como los que se ha visto en la introducción a la programación funcional.

Imágenes: Pixabay (Pexels)

No te olvides valorar esta entrada

Sin votos
Por favor espera...

Archivado en: Python

Entrada anterior: « Julia en Jupyter Notebook
Siguiente entrada: Numpy básico: aplicar una función sobre una fila o columna de una Array de Numpy »

Interacciones del lector

Deja un comentario Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones de Analytics Lane.

Contenido relacionado

Barra lateral primaria

Tiendas afiliadas

Realiza tus compras mediante los enlaces y colabora con la web, todo sin coste adicional para ti. También puedes ver nuestra tienda. ¡Gracias!
Aliexpress Amazon Banggood Gearbest

Seguir a Analytics Lane

  • twitter
  • pinterest
  • youtube
  • telegram
  • github
  • rss

Seguir en Feedly

follow us in feedly

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones de Analytics Lane.

Política de Privacidad

Lo mejor valorado

  1. Seleccionar filas y columnas en Pandas con iloc y loc
    Puntuación: 5.0/5. 5 votos.
  2. Unir y combinar dataframes con pandas en Python
    Puntuación: 5.0/5. 5 votos.
  3. Eliminar registros duplicados en pandas
    Puntuación: 5.0/5. 5 votos.
  4. Guardar y leer archivos Excel en Python
    Puntuación: 5.0/5. 4 votos.
  5. Archivos JSON con Python: lectura y escritura
    Puntuación: 4.7/5. 7 votos.

Entradas recientes

  • Numpy básico: inicializar arrays de Numpy con un valor diciembre 4, 2019
  • Bajar impuestos para crecer más diciembre 2, 2019
  • Usar Python desde Matlab noviembre 29, 2019
  • Numpy básico: como añadir elementos en arrays de Numpy con np.append() noviembre 27, 2019
  • Relación entre impuestos y riqueza noviembre 25, 2019

Comentarios recientes

  • Daniel Rodríguez en Reglas de asociación y market-basket analysis
  • eva en Reglas de asociación y market-basket analysis
  • Daniel Rodríguez en Proteger las funciones escritas en Matlab para su distribución
  • Marco Cabrera en Proteger las funciones escritas en Matlab para su distribución
  • Marc en Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

Etiquetas

Anaconda Analytics Lane App Designer Bases de datos Blockchain CLV Computación cuántica Criptomonedas Deep learning Elecciones Excel Git GUIDE Hash Java Jupyter Libros Machine learning Marketing node numpy pandas Precios RapidMiner scikit-learn seaborn series temporales Small Data Spark SQL Unit testing VirtualBox

Footer

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Noticias
  • Opinión

Programación

  • JavaScript
  • Julia
  • Matlab
  • Python
  • R

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Tienda

Afiliados

  • AliExpress
  • Amazon
  • BangGood
  • GearBest
  • GearVita
  • Geekbuying
  • JoyBuy

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

2018-2019 Analytics Lane · Términos y condiciones · Política de Cookies · Política de Privacidad · Herramientas de privacidad · Contacto