J'utilise Python 3.2. J'ai essayé ceci:
xor = lambda x,y: (x+y)%2
l = reduce(xor, [1,2,3,4])
Et j'ai eu l'erreur suivante:
l = reduce(xor, [1,2,3,4])
NameError: name 'reduce' is not defined
Essayé d'imprimer reduce
dans la console interactive - a obtenu cette erreur:
NameError: name 'reduce' is not defined
Est-ce que reduce
est vraiment supprimé dans Python 3.2? Si tel est le cas, quelle est l'alternative?
Il a été déplacé à functools
.
Vous pouvez ajouter
from functools import reduce
avant d'utiliser le réduire.
Ou si vous utilisez les six bibliothèques
from six.moves import reduce
Dans ce cas, je pense que ce qui suit est équivalent:
l = sum([1,2,3,4]) % 2
Le seul problème avec cela est que cela crée de gros nombres, mais peut-être que c'est mieux que des opérations modulo répétées?