10 Python One-Finers que cambiarán tu juego de codificación
Una lista que no puede perderse de soluciones elegantes de Python para realizar tareas de programación y procesamiento comunes en una sola línea de código.
Las frases ingeniosas de Python son, como sugiere el título de la publicación, soluciones innovadoras para hacer que su código sea más compacto y eficiente, generalmente simplificando un proceso que a menudo requiere varias líneas de código en una sola. Este artículo enumera 10 ejemplos eficientes de frases ingeniosas que, a pesar de su simplicidad, pueden mejorar significativamente sus tareas de codificación al simplificar y optimizar las operaciones comunes y las tareas repetitivas que se necesitan con frecuencia.
Vamos a entrar en ello.
1. Funciones de Lambda
Podría decirse que una de las funciones más conocidas, Lambda Functions es un enfoque muy compacto para definir funciones anónimas simplemente especificando argumentos de entrada en el lado izquierdo de un signo ":", y lo que quiere hacerles sobre ellos en el lado derecho. Este código define una función para calcular un precio con descuento al reducir el precio de un producto original en un 10%.
price_after_discount = lambda price: price*0.9
2. Operaciones de mapas en listas
Las operaciones de mapas son extremadamente útiles para aplicar la misma transformación a todos los elementos en una colección como listas. También pueden usarse en combinación con funciones lambda reutilizables personalizadas. Por ejemplo, suponga que tiene una lista de precios originales de productos en una tienda de recuerdos turísticos sujeta a una política libre de impuestos, y desea otra lista con el precio final después de la deducción de impuestos (10%) del precio total. Al usar la función lambda definida previamente, puede probar algo como:
discounted_prices = list(map(price_after_discount, prices))
3. Listas de desempaquetado
Supongamos que tiene una lista de precios como product_prices=[19.99, 5.49, 12.99]
y desea imprimir todos estos precios uno por uno. En lugar de hacer esto con una estructura de bucle, ¿por qué no utilizar el operador '*' para descomprimir la lista e imprimir sus elementos separados por espacios en blanco en una sola línea?
print(*product_prices)
4. Comprensión de listas con una condición
Tiene una lista de nombres de productos en su tienda, como productos=["llavero", "camiseta", "taza", "magnet", "globo de nieve"]
, y desea Obtenga una nueva lista que contenga los índices de productos cuyo nombre comienza con 'M'. Puede hacerlo a través de la comprensión de la lista, es decir, construir una nueva lista basada en el análisis de una condición en los valores de una lista existente.
[index for index in range(len(products)) if products[index][0] == 'M']
5. Verificar las condiciones de manera eficiente con any
y all
Un par de funciones útiles para comprobar rápidamente una condición en todos los elementos de una colección son cualquier y todos. Ambos devuelven un valor Verdadero/Falso, que indica si al menos un elemento cumple la condición (cualquiera), o si todos los elementos de la colección la cumplen (todos).
Si tiene una lista de niveles de inventario para sus productos, como Inventory=[4, 0, 7, 10, 0]
, puede probar:
any_out_of_stock = any(stock == 0 for stock in inventory)
all_in_stock = all(stock > 0 for stock in inventory)
6. Operador de morsa para una verificación de condiciones más rápida
El operador Walrus ':=' combina la asignación y el uso de una variable dentro de la misma expresión, simplificando así el enfoque para realizar declaraciones condicionales donde necesitamos una variable de un solo uso. Por ejemplo, suponiendo que estamos analizando la reseña de un texto de un cliente antes de enviarla, una forma eficiente de verificar que la reseña tenga al menos 30 caracteres es:
if (n := len(customer_review)) < 10: print("Minimum 30 characters required")
7. Ordenar entradas del diccionario por valores
¡Entremos en los diccionarios ahora! Suponga que tenemos un diccionario que contiene el número de ventas para cada uno de nuestros productos.
sales_data = {
'Keychain': 1200,
'T-shirt': 800,
'Mug': 500,
'Magnet': 1500
}
Esta única línea de código hace el trabajo de clasificar los productos en la orden de venta descendente:
sorted_sales = dict(sorted(sales_data.items(), key=lambda item: item[1], reverse=True))
8. Filtrar entradas con filter
También puede filtrar entradas en un diccionario de Python utilizando las funciones de filtro y lambda como se muestra a continuación para filtrar productos más vendidos (aquellos donde se vendieron 1000 unidades o más):
best_selling_products = list(filter(lambda item: item[1] > 1000, sales_data.items()))
9. Utilice reduce
para realizar agregaciones
Realizar agregaciones sobre elementos en una lista no puede ser más sencillo gracias a la función de reducción, que en combinación con funciones lambda ayuda a "reducir" los elementos de una colección (como las ventas por producto) a un único valor representativo, por ejemplo, el número total de Ventas en todos los productos:
total_sales = reduce(lambda x, y: x + y, sales_data.values())
10. Generar permutaciones de la lista
Envolvemos con un operador interesante que define un conjunto de listas dadas por todas las permutaciones posibles de una lista aprobada como argumento.
from itertools import permutations
list(permutations(['Alicia', 'Bob', 'Cristina', 'David']))
¿Necesita sentarse en un comité de cuatro en una mesa lineal para un evento, y no están seguros de qué/cuántas formas de establecerlos uno junto a otro? Las permutaciones le darán todas las soluciones posibles.