← retour aux snippets

operator.methodcaller: appeler une méthode sur une séquence

Éviter les lambdas pour appeler la même méthode sur tous les éléments.

objectif

Éviter les lambdas pour appeler la même méthode sur tous les éléments.

code minimal

from operator import methodcaller
xs = ["a", "bb", "ccc"]
lens = list(map(methodcaller("__len__"), xs))
print(lens == [1,2,3])  # attendu: True

utilisation

from operator import methodcaller
words = ["a", "B", "c"]
lowered = list(map(methodcaller("lower"), words))
print(lowered == ["a","b","c"])

variante(s) utile(s)

from operator import methodcaller
strip = methodcaller("strip")
print(strip("  x  ") == "x")

notes

  • methodcaller évite les lambdas verbeuses et améliore la lisibilité.
  • Combinez avec map, sorted(key=…), etc.