typestar

El módulo operator en Python

Funciones con nombre para los operadores, que le ganan a una lambda como clave de orden.

from operator import attrgetter, itemgetter, methodcaller


class Paso:
    def __init__(self, titulo, estrellas):
        self.title = titulo
        self.stars = estrellas

    def label(self):
        return self.title.upper()


filas = [("rust", 12), ("python", 6), ("sql", 3)]
print(sorted(filas, key=itemgetter(1), reverse=True))
print(list(map(itemgetter(0), filas)))

pasos = [Paso("slices", 2), Paso("traits", 3)]
print([s.title for s in sorted(pasos, key=attrgetter("stars"))])
print(list(map(methodcaller("label"), pasos)))

Cómo funciona

  1. itemgetter y attrgetter son las dos comunes.
  2. Son más rápidas y más claras que la lambda equivalente.
  3. methodcaller llama un método por nombre en cada elemento.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
19
Caracteres a escribir
502
Tokens
167
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 95 segundos.

Escribe este fragmento

Paso 3 de 3 en functools y operator; paso 40 de 53 en Python pythónico.

← Anterior Siguiente →