español - python 3.7 itertools
Python devuelve `<objeto itertools.combinations a 0x10049b470>`-¿Cómo puedo acceder a esto? (2)
Tengo este simple código que devuelve lo que está en el título. ¿Por qué la matriz no se imprime simplemente? Esto no es solo un problema de itertools
, también lo he notado para otro código donde solo devolverá la ubicación del objeto.
Aquí está el código. Estoy ejecutando 2.7.1, una distribución entusiasta (pylab), usándola para la clase.
import itertools
number = [53, 64, 68, 71, 77, 82, 85]
print itertools.combinations(number, 4)
No imprime una lista simple porque el objeto devuelto no es una lista. Aplique la función de list
en él si realmente necesita una lista.
print list(itertools.combinations(number, 4))
itertools.combinations
devuelve un iterador. Un iterador es algo que puedes solicitar. Por lo general, los elementos de un iterador se calculan tan pronto como los recuperas, por lo que no existe la pena de copiar todo el contenido a la memoria, a diferencia de una list
.
Prueba esto:
for x in itertools.combinations(number, 4):
print x
O más corto:
results = [x for x in itertools.combinations(number, 4) ]
Básicamente, todas las itertools módulo itertools devuelven este tipo de objeto. La idea es que, en lugar de calcular una lista de respuestas por adelantado, devuelven un objeto iterable que "sabe" cómo calcular las respuestas, pero no lo hace a menos que se lo "pregunte". De esta manera, no hay un costo inicial significativo para los elementos informáticos. Véase también esta muy buena introducción a los generadores .