El día de hoy veremos un par de One liners en Python que nos pueden ser de mucha utilidad. No solo para reducir líneas de código, si no para hacer que nuestro código sea mucho más fácil de leer y mantener.
Bien, con esta breve introducción, podemos comenzar.
Función SUM
Regularmente, siempre que necesitamos sumar elementos de una colección, ya sea una lista, una tupla, un arreglo etc.. lo primero que se nos viene a la mente es implementar una ciclo for. Algo como lo siguiente.
total = 0
for element in range(0, 1_000_000):
total += element
print(total)
Si bien esto funciona, déjame decirte que existe una forma mucho más sencilla, y eficiente, para obtener el mismo resultado, y estamos hablando de la función sum.
total = sum(range(0, 1_000_000)
print(total)
Menos código, mismo resultado, mejor performance. 🛸
Desempaquetado de valores.
Siempre que deseemos obtener valores de una colección, podemos hacer uso del desempaquetado que nos ofrece Python.
Pasando de esto.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
first = numbers[0]
second = numbers[1]
third = numbers[2]
A esto.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
first, second, third, _ = numbers
¿Mucho mejor no lo crees? 🐛
Si quieres conocer el por qué del guion bajo (_), te comparto un post en donde hablamos de este curioso carácter en Python.
List comprehensions
Siguiendo con el tema las colecciones, déjame decirte que existe una forma en la cual es posible crear listas y diccionarios en Python en una sola línea de código.
Podemos refactorizar el siguiente código.
new_list = []
for element in range(0, 1_000_000):
if element % 2 == 0 and element % 5 == 0:
new_list.append(element)
De tal forma que luzca como algo así.
new_list = [element for element in range(0, 1_000_000) if element % 2 == 0 and element % 5 == 0 ]
Creando un código mucho más Pythonico. 🐍
Lambdas
De funciones lambdas ya hemos hablado en ocasiones anteriores, sin embargo es importante mencionar que mediante ella es posible crear funciones en una sola línea de código.
Antes.
def suma(a, b):
return a + b
resultado = suma(10, 20)
Después.
suma = lambda(a, b): a + b
resultado = suma(10, 20)
Expresiones condicionales
Y ya para finalizar, siempre que desees asignar o retornar algún valor dependiendo de alguna condición, lo que puedes hacer es apoyarte del "operador ternario" en Python.
Aquí un ejemplo.
size = None
if screen.length >= 750:
size = 'M'
else:
size = 'S'
Podemos reducir eso a esto:
size = 'M' if screen.length >= 750 else 'S'
Mismo resultado, con menos líneas de código.