PyWombat

← Volver a artículos

One liners en Python

October 7, 2022

933 views

2 min de lectura

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.