226 votes

Comment ajouter plusieurs arguments à une fonction map dont l'un reste inchangé ?

Supposons que nous ayons une fonction add comme suit

def add(x, y):
    return x + y

nous voulons appliquer la fonction map à un tableau

map(add, [1, 2, 3], 2)

La sémantique est que je veux ajouter 2 à chaque élément du tableau. Mais le map nécessite également une liste dans le troisième argument.

Remarque : Je mets le add par souci de simplicité. Ma fonction d'origine est beaucoup plus compliquée. Et bien sûr, il est possible de définir la valeur par défaut de y en add est hors de question car elle sera modifiée à chaque appel.

2voto

Hanish Madan Points 19

Vous pouvez inclure lambda avec map :

list(map(lambda a: a+2, [1, 2, 3]))

1voto

SeasonalShot Points 724

Pour passer plusieurs arguments à un map fonction.

def q(x,y):
    return x*y

print map (q,range(0,10),range(10,20))

Ici q est une fonction à arguments multiples qui map() appels. Assurez-vous que la longueur des deux plages, à savoir

len (range(a,a')) and len (range(b,b')) are equal.

1voto

bzd111 Points 97

Dans : nums = [1, 2, 3]

Dans : map(add, nums, [2]*len(nums))

Sortie : [3, 4, 5]

0voto

andrew-e Points 654

Une autre option est :

results = []
for x in [1,2,3]:
    z = add(x,2)
    ...
    results += [f(z,x,y)]

Ce format est très utile pour appeler plusieurs fonctions.

0voto

Fadhel Muhammad Points 21
#multi argument

def joke(r):
     if len(r)==2:
          x, y = r
          return x + y
     elif len(r)==3:
           x,y,z=r
           return x+y+z

#using map

    print(list(map(joke,[[2,3],[3,4,5]])))

sortie = [6,12]

si le cas est le même que ci-dessus et que l'on souhaite utiliser la fonction

def add(x,y):
    ar =[]
    for xx in x:
         ar.append(xx+y)
    return ar
print(list(map(add,[[3,2,4]],[2]))[0])
output = [5,4,6]

Note : vous pouvez la modifier à votre guise.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X