Cómo usar las comprensiones de la lista de Python (y cuándo no usarlas)

  • Gabriel Brooks
  • 0
  • 3957
  • 176
Anuncio

Es posible que haya oído hablar de la comprensión de la lista de Python. Tal vez incluso sea algo que hayas usado sin entenderlo realmente. Ahora es el momento de aprender, ya que cubrimos todo lo que necesita saber sobre la comprensión de listas en Python.

Antes de comenzar, vale la pena actualizarse sobre cómo funcionan las matrices y las listas en Python Cómo funcionan las matrices y las listas en Python Cómo funcionan las matrices y las listas en Python Las matrices y las listas son algunas de las estructuras de datos más útiles en la programación, aunque pocas personas las usan a su máximo potencial. y cómo usar los diccionarios Python Diccionario Python: cómo puede usarlo para escribir un mejor código Diccionario Python: cómo puede usarlo para escribir un mejor código Piense en un diccionario Python como conjuntos desordenados de pares clave-valor. En este artículo, le presentamos cómo trabajar con ellos y usarlos para mejorar su código Python. .

¿Qué es la comprensión de la lista de Python??

La comprensión de la lista suena compleja pero realmente no lo es. En Python, es simplemente una forma rápida de filtrar o refinar una lista basada en algunos criterios..

Le ahorra tener que escribir varias líneas de código (especialmente si ya está en un bucle), y mantiene la legibilidad de su código ordenado.

Sin embargo, tenga cuidado, ya que la comprensión de la lista no siempre es la respuesta. Es fácil dejarse llevar y escribir comprensiones complejas que son difíciles de leer. A veces, escribir más código es mejor, especialmente si ayuda a la legibilidad. Apéguese a tareas simples y mantenga el código a una sola responsabilidad.

Cómo usar las comprensiones de listas en Python

Nota: Todos estos ejemplos usan Python 3.6. Si no está seguro de las diferencias entre Python 3 y Python 2, asegúrese de leer nuestras Preguntas frecuentes sobre Python Las preguntas más frecuentes sobre la programación de Python Las preguntas más frecuentes sobre la programación de Python En este artículo, lo guiaremos a través de todo lo que necesitas saber sobre Python como principiante. , donde cubrimos esta pregunta y más.

Considere este bit de código que copia una matriz y convierte cada letra de esa matriz en mayúscula. Lo hace recorriendo cada elemento de la matriz:

letras = ['a', 'b', 'c', 'd'] print (letras) upper_letters = [] para letras en letras: result = letter.upper () upper_letters.append (result) print (upper_letters)

Ahora aquí está la misma lógica exacta, excepto que se hace en una sola línea de código usando una comprensión básica de la lista de Python:

letras = ['a', 'b', 'c', 'd'] print (letras) upper_letters = [x.upper () para x en letras] print (upper_letters) 

Como puede ver, el resultado es exactamente el mismo, pero el proceso involucra significativamente más código sin la comprensión de la lista.

Analicemos este simple ejemplo.

Este ejemplo crea una lista llamada letras. Esto almacena las letras minúsculas “una”, “segundo”, “do”, y “re”. ¿Y si quiere que todos estos elementos de la lista sean mayúsculas? Bueno, sin la comprensión de la lista, debe crear una nueva lista para almacenar el resultado (llamado letras superiores), repita cada elemento en el letras lista, convierta cada letra (y guárdela en resultado-opcional pero buena práctica), y luego agregue la letra mayúscula a la nueva lista. Cuánto trabajo!

La comprensión de la lista aquí es casi exactamente equivalente a la alternativa de bucle. Dice efectivamente “para cada letra en la lista de letras, conviértalas en mayúsculas y devuelva el resultado como una nueva lista.”

La comprensión de listas solo puede funcionar en listas, y debe devolver una nueva lista. Vamos a cavar más profundo.

Hay tres partes para una comprensión de la lista (cubriremos la tercera parte a continuación). Las comprensiones de listas deben comenzar y terminar con corchetes ([ y ]) Así es como fue diseñado, y le dice a Python que trabajará con una lista.

Dentro de los corchetes, debe comenzar con el resultado. Esto es lo que quieres hacer con cada elemento de la lista.

En el ejemplo anterior, el siguiente código convierte cada elemento (referenciado por el nombre de la variable X) a mayúsculas utilizando el Superior() método, que forma parte de la biblioteca principal de Python:

[x.upper () # no se ejecutará, solo la mitad de la comprensión en este punto

A continuación, debe indicarle a Python en qué lista trabajar y asignar cada elemento individual a una variable. Esto es exactamente lo mismo que para el bucle for en el ejemplo de largo aliento:

para x en letras

Cada vez que el ciclo recorre la lista, el valor de X cambiará a lo que sea el elemento actual. Comenzará como “una”, y entonces “segundo”, y así.

Si lo pones todo junto (y lo asignas a una variable llamada letras superiores), habrás terminado:

upper_letters = [x.upper () para x en letras]

Ahora, letras superiores contendrá una lista de letras mayúsculas, comenzando en “UNA”, y entonces “segundo” y así.

La tercera parte de la comprensión de la lista en Python

Como mencionamos anteriormente, hay una tercera parte para enumerar la comprensión.

Una vez que haya realizado los dos pasos anteriores, puede incluir una condición opcional. Esto es como usar un Si declaración para decir “hacerme una nueva lista, basada en esta lista anterior, pero solo incluir elementos que cumplan con mis criterios”.

Así es como se ve:

edades = [1, 34, 5, 7, 3, 57, 356] print (edades) old_ages = [x para x en edades si x> 10] print (old_ages)

Este ejemplo usa una nueva lista llamada siglos. los viejos años La lista se ensambla utilizando una lista de comprensión. los Si condición al final significa que solo los elementos de la lista que cumplen con los criterios se insertan en la nueva lista. En este ejemplo, se permiten edades mayores de diez años..

Cuándo no usar las comprensiones de la lista de Python

La comprensión de la lista es increíble una vez que la dominas, pero no es útil en todas las circunstancias. Probablemente no debería usarlo cuando necesite más de una condición:

old_ages = [x para x en edades si x> 10 yx < 100 and x is not None]

Este código funciona, pero está empezando a ser largo y confuso. Del mismo modo, algo más que una simple llamada a función puede no funcionar. En este ejemplo, obtendrá un error:

letras = ['a', 'b', 'c', 'd', 2] print (letras) upper_letters = [x.upper () para x en letras] print (upper_letters)

Este es un código perfectamente válido, pero como no puede poner en mayúscula un número, no funcionará. Este es un caso en el que el bucle más largo es realmente preferible, ya que podrá hacer algunas gestiones de excepción:

letras = ['a', 'b', 'c', 'd', 1] print (letras) upper_letters = [] para letras en letras: try: result = letter.upper () upper_letters.append (result) excepto AttributeError: pasar # no hacer nada imprimir (letras superiores)

Comience a utilizar las comprensiones de la lista de Python

Ahora que sabe cuán fácil es la comprensión de listas en Python, no hay razón para no usarla. Solo recuerda hacerlo simple y considera la legibilidad por encima de todo.

Quizás controle un Arduino con Python Cómo programar y controlar un Arduino con Python Cómo programar y controlar un Arduino con Python Lamentablemente, es imposible programar directamente un Arduino en Python, pero puede controlarlo a través de USB usando un Python programa. Así es cómo. , o qué tal una cámara de seguridad de red DIY Python Cámara de seguridad de red de bricolaje e inclinación de bricolaje con Raspberry Pi Cámara de seguridad de red de bricolaje e inclinación de bricolaje con Raspberry Pi Aprenda cómo hacer una cámara de seguridad de inclinación y desplazamiento de forma remota con una Raspberry Pi. Este proyecto se puede completar en una mañana con solo las partes más simples. ?




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.