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 l'erreur suivante:
l = reduce(xor, [1,2,3,4])
NameError: name 'reduce' is not defined
J'ai essayé l'impression reduce
dans la console interactive - j'ai obtenu cette erreur:
NameError: name 'reduce' is not defined
Est-ce reduce
vraiment supprimé dans Python 3.2? Si tel est le cas, quelle est l'alternative?
python
reduce
python-3.2
Sergey
la source
la source
Réponses:
Il a été déplacé vers
functools
.la source
sum(item['key'] for item in list_of_dicts)
.Vous pouvez ajouter
from functools import reduce
avant d'utiliser la réduction.
la source
Ou si vous utilisez la bibliothèque six
from six.moves import reduce
la source
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 grands nombres, mais peut-être que c'est mieux que des opérations modulo répétées?
la source
vous devez installer et importer réduire à partir du
functools
package pythonla source