La fonction de carte à retour de liste présente l'avantage d'économiser la saisie, notamment lors de sessions interactives. Vous pouvez définir lmap
(par analogie avec la fonction imap
) qui renvoie une liste :
lmap = lambda func, *iterable: list(map(func, *iterable))
Puis appel lmap
au lieu de map
fera l'affaire : lmap(str, x)
est plus court de 5 caractères (30% dans ce cas) que list(map(str, x))
et est certainement plus courte que [str(v) for v in x]
. Vous pouvez créer des fonctions similaires pour filter
aussi.
Il y avait un commentaire à la question originale :
Je suggérerais un renommage pour obtenir map() pour retourner une liste dans Python 3.* car cela s'applique à toutes les versions de Python3. Existe-t-il un moyen de le faire ? - meawoppl Jan 24 à 17:58
Il est possible de le faire, mais c'est une très mauvaise idée. Juste pour le plaisir, voici comment vous pouvez ( mais ne devrait pas ) le faire :
__global_map = map #keep reference to the original map
lmap = lambda func, *iterable: list(__global_map(func, *iterable)) # using "map" here will cause infinite recursion
map = lmap
x = [1, 2, 3]
map(str, x) #test
map = __global_map #restore the original map and don't do that again
map(str, x) #iterator
16 votes
Il est plus pythique d'utiliser un fichier compréhension de la liste .
map()
était presque retiré de la langue parce qu'il n'y a aucune raison de l'utiliser au lieu d'une compréhension de liste ou d'unefor
boucle.