Ir al contenido principal

Código conciso en Python

En Python es posible escribir código muy conciso para ciertas tareas, de formas que no son posibles en otros lenguajes como C o Java. Naturalmente, cuando un programador de estos otros lenguajes comienza a escribir en Python es posible que intente escribir código como si fuera C, sin aprovechar las ventajas del lenguaje. He aquí algunos ejemplos

# Código no idiomático:
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
res = 0
for n in lst:
    res = res + n
print (res)

# Código idiomático
lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
res = sum(lst)
print(res)

En el caso de condiciones booleanas también están las funciones any y all, las cuales permiten verificar si al menos un elemento es True o bien si todos los elementos son True. Al combinarlo con las “List Comprehensions” es posible hacer código muy corto:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def is_even(n):
    return (n % 2) == 0

# Código no idiomático:
def all_are_even(numbers):
    for n in numbers:
        if not is_even(n):
            return False
    return True

# Código idiomático
def all_are_even(numbers):
    return all([is_even(n) for n in numbers]

# Utilizando funciones de orden superior
def all_are_even(numbers):
    return all(map(is_even, numbers))

Comentarios

Entradas populares de este blog

Hola Mundo

En este blog estaré publicando cosas relacionadas con programación: lenguajes, técnicas, curiosidades, paradigmas, entre otros. Y como es tradición, el primer programa que se escribe suele ser uno que imprima: “Hola Mundo”. ¿Pero cual es su origen? La tradición empezó con el libro “The C Programming Language”, que incluyó el siguiente código fuente, para mostrar la estructura básica de un programa en C: #include main( ) { printf("hello, world\n"); } “Hola Mundo”, al ser un programa tan simple, es una elección popular para probar un compilador/intérprete recién instalado, al comienzo cuando se aprende un lenguaje o un framework, etc. Otros ejemplos de “Hola Mundo” son: // Hola Mundo en C++ #include int main() { std::cout // Hola Mundo en Go package main import "fmt" func main() { fmt.Println("Hello, World!") } // Hola Mundo en Java public class HelloWorld { public static void main(String[] args) { ...