Pitón

Lista de comprensiones en Python

Lista de comprensiones en Python
Las listas por comprensión se usan a menudo en Python para escribir declaraciones de una sola línea que crean una nueva lista o diccionario al recorrer un objeto iterable. Este artículo explicará cómo usar listas por comprensión en Python, comenzando con una explicación básica de cómo funcionan los bucles for en Python.

For Loop en Python

Una declaración de bucle for en Python itera secuencialmente sobre los miembros de cualquier objeto, lista, cadena, etc. En comparación con otros lenguajes de programación, su sintaxis es mucho más limpia y no requiere definir manualmente los pasos de iteración y comenzar la iteración. Aunque hay formas de hacer que su comportamiento sea el mismo que el de otros lenguajes de programación (no se tratará en este artículo). También puede ejercer cierto control sobre los bucles for mediante el uso de declaraciones como continuar, romper, pasar, etc. A continuación se muestra un ejemplo simple de bucle for en Python:

para x en el rango (10):
imprimir (x)

El bucle for de arriba imprimirá diez números comenzando desde 0 y terminando en 9.

Lista de comprensiones

La comprensión de listas no es más que una forma abreviada / concisa de escribir bucles for de varias líneas en una declaración de una sola línea. El siguiente ejemplo de comprensión de la lista creará una nueva lista como [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] al incluir todos los valores de "x" en ella.

números = [x para x en el rango (10)]
imprimir (números)

Tenga en cuenta que la comprensión de la lista siempre crea una nueva lista y no modifica los iterables originales utilizados en la expresión. Una expresión típica de comprensión de lista debe tener una cláusula "for" y puede ir seguida de declaraciones condicionales "if" y "else". Sin usar una lista de comprensión, el ejemplo anterior se escribirá de la siguiente manera:

números = []
para x en el rango (10):
números.añadir (x)
imprimir (números)

Rendimiento y legibilidad

Las listas por comprensión son más rápidas que los bucles for. Sin embargo, a menos que esté iterando sobre cientos de miles de elementos, no notará mejoras importantes en el rendimiento. Si bien la comprensión de listas proporciona una forma concisa de escribir bucles for, las expresiones complejas pueden provocar una legibilidad deficiente del código y una mayor verbosidad. Es importante mantener el código legible, a menos que lograr el máximo rendimiento sea una necesidad absoluta para su programa.

Ejemplo: uso de la sintaxis de comprensiones de listas con diccionarios y conjuntos

Un diccionario de Python es una colección de elementos definidos en pares clave-valor, mientras que un conjunto es una colección de valores únicos donde no se permiten duplicados. Las listas por comprensión también se pueden usar con diccionarios y conjuntos de Python. La sintaxis difiere ligeramente, en lugar de envolver la expresión entre llaves, ahora tendrá que usar llaves. También obtendrá un nuevo diccionario / objeto de conjunto en lugar de una nueva lista.

data = "ciudad": "nueva york", "nombre": "john doe"
formatted_data = k: v.título () para k, v en datos.artículos()
imprimir (datos_formateados)

El ejemplo anterior convertirá los valores de cadena en mayúsculas y minúsculas y creará un nuevo diccionario llamado "formatted_data", cuya salida será: 'city': 'New York', 'name': 'John Doe'. También puede cambiar el diccionario / establecer en el lugar especificando la variable de diccionario existente en el lado izquierdo.

data = "ciudad": "nueva york", "nombre": "john doe"
datos = k: v.título () para k, v en datos.artículos()
imprimir (datos)

Sin usar comprensiones de diccionario, el código se vería así:

data = "ciudad": "nueva york", "nombre": "john doe"
formatted_data =
para k, v en datos.artículos():
formatted_data [k] = v.título()
imprimir (datos_formateados)

Como no hay pares clave-valor en los conjuntos, una comprensión de conjunto se puede definir de la misma manera que una comprensión de lista. La única diferencia es el uso de llaves.

Ejemplo: múltiples bucles for en una comprensión de lista

El ejemplo de comprensión de listas mencionado anteriormente es básico y utiliza una sola declaración "para". A continuación se muestra un ejemplo que utiliza múltiples bucles for y una declaración condicional "if".

adjetivos = ["Disco", "Eoan", "Focal", "Artful"]
animales = ["Dingo", "Armiño", "Fossa", "Castor"]
nombres de código = [x + "" + y para x en adjetivos para y en animales si y.empieza con (x [0])]
imprimir (nombres en clave)

El código mostrará ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa'] como salida. Los dos bucles for pasan por listas de "adjetivos" y "animales" y sus miembros se unen usando un espacio, solo si la primera letra de ambas palabras es la misma. Sin usar listas por comprensión, el código se vería así:

adjetivos = ["Disco", "Eoan", "Focal", "Artful"]
animales = ["Dingo", "Armiño", "Fossa", "Castor"]
nombres de código = []
para x en adjetivos:
para y en animales:
Si y.comienza con (x [0]):
nombres en clave.añadir (x + "" + y)
imprimir (nombres en clave)

Ejemplo: Comprensión de listas con cláusula if-else

El siguiente ejemplo mostrará el uso de declaraciones if y else en listas por comprensión.

number_list = [1, 2, 3, 4]
otra_lista = [5, 6, 7, 8]
resultado = [Verdadero si (x + y)% 2 == 0 de lo contrario Falso para x en lista_números para y en otra_lista]
imprimir (resultado)

Mientras recorre dos listas, la comprensión de la lista anterior verifica si la suma del par de elementos es par o no. Ejecutar el código anterior le mostrará [Verdadero, Falso, Verdadero, Falso, Falso, Verdadero, Falso, Verdadero, Verdadero, Falso, Verdadero, Falso, Falso, Verdadero, Falso, Verdadero] como resultado. Sin usar la comprensión de listas, el código se vería así:

number_list = [1, 2, 3, 4]
otra_lista = [5, 6, 7, 8]
resultado = []
para x en lista_números:
para y en otra_lista:
si (x + y)% 2 == 0:
resultado.añadir (verdadero)
demás:
resultado.añadir (falso)
imprimir (resultado)

Conclusión

Las listas por comprensión proporcionan una forma agradable de escribir declaraciones de bucle limpias y concisas. Sin embargo, pueden volverse rápidamente complejos y difíciles de entender si se utilizan múltiples bucles y declaraciones condicionales. Al final, se trata del nivel de comodidad de un programador, pero en general es una buena idea escribir código explícito, legible y fácil de depurar en lugar de usar taquigrafía excesivamente.

Los mejores juegos de línea de comandos para Linux
La línea de comandos no es solo su mayor aliado cuando usa Linux, también puede ser la fuente de entretenimiento porque puede usarla para jugar muchos...
Las mejores aplicaciones de mapeo de gamepad para Linux
Si te gusta jugar juegos en Linux con un gamepad en lugar de un sistema de entrada de teclado y mouse típico, hay algunas aplicaciones útiles para ti....
Herramientas útiles para jugadores de Linux
Si le gusta jugar juegos en Linux, es probable que haya utilizado aplicaciones y utilidades como Wine, Lutris y OBS Studio para mejorar la experiencia...