NameError: el nombre 'reducir' no está definido en Python


187

Estoy usando Python 3.2. Probé esto:

xor = lambda x,y: (x+y)%2
l = reduce(xor, [1,2,3,4])

Y obtuvo el siguiente error:

l = reduce(xor, [1,2,3,4])
NameError: name 'reduce' is not defined

Intenté imprimir reduceen la consola interactiva. Recibí este error:

NameError: name 'reduce' is not defined


¿ reduceRealmente se elimina en Python 3.2? Si ese es el caso, ¿cuál es la alternativa?


3
@JBernardo, ¿cuál es la herramienta correcta?
Sergey

Respuestas:




8

O si usas las seis bibliotecas

from six.moves import reduce

3

En este caso, creo que lo siguiente es equivalente:

l = sum([1,2,3,4]) % 2

El único problema con esto es que crea grandes números, pero ¿tal vez eso es mejor que las operaciones de módulo repetidas?


Las operaciones de módulo repetidas son útiles cuando ayuda a mantener los números pequeños. Sumar números no creará números grandes a menos que sumes MUCHOS números, por lo que en este caso no ayudaría. Especialmente porque no hacerlo permite el uso de la función de suma incorporada, que se ejecutará mucho más rápido que la aplicación repetida de una función definida por el usuario
HackerBoss
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.