¿Cuál es la diferencia entre rendimiento y retorno en Python y cómo usarlos?
Antes del rendimiento: Iterador
Descubrir ganancia: Constructor.
Uso de rendimiento: llamada recursiva
1. Programa iterador
El ejemplo más simple de un iterador debería ser un subíndice de matriz. Eche un vistazo al siguiente código C++. :
int matriz[10];
for(int I = 0;i<10;i++)
printf("%d ",matriz[I] );
El iterador funciona en el contenedor (matriz[10]). Toma los valores (matriz[i]) del contenedor en un orden determinado (i++) y opera sobre ellos. (printf( "%d ", array[i]).
El código anterior está traducido a Python:
array = [i for i in range(10)] p>
Para I en una matriz:
Imprimir I,
¿Qué hace para i en una matriz (no piense en eso)? una lista y, en segundo lugar, el tipo de lista incorporado tiene un comportamiento siguiente predeterminado. La acción secreta realizada por Python después de descubrir esto es: sacar el iterador contenedor de la matriz, luego darle el valor a I, dejar el cuerpo de. el bucle for lo maneja y for imprime el valor. p>
La pregunta ahora es: ¿se pueden iterar los datos como un contenedor?
¿Por qué no? ¿No está relacionado con nt? El rendimiento no será tan amarillo +bt.
2. Constructor
¿Cómo convertir una función en un constructor? >def gen():
Imprimir "entrada"
rendimiento 1
Imprimir "página siguiente"
rendimiento 2 p >
Imprimir "página siguiente otra vez"
Para I en gen():
Imprimir I
¡Todos! Python en la función gen Vieron la ganancia, y sé que funciona con next. La pregunta es ¿cómo jugar con el contenedor de código?
Cuando obtengo el iterador del contenedor, no es nada, para la matriz es el subíndice -1. para las funciones es la entrada de la función. No he hecho nada, pero todo está listo y es mi turno a continuación.
Comienza desde i en g y luego deja que el itreator se arrastre hasta donde está la declaración de rendimiento. existe y devuelve el valor
Next subirá nuevamente a donde está la siguiente declaración de rendimiento y devolverá el valor, y así sucesivamente hasta que la función regrese (el final del contenedor)
Debes ver que el resultado del código anterior es:
Ingresar
1
Luego
2
Siguiente
Si no lo ve, no mire hacia abajo para evitar que Yield se ocupe de usted.
Usar Yield
La capacidad de iteración de código de Yield no solo puede interrumpir la ejecución de la función, sino también registrar los datos en el punto de interrupción. Esto es exactamente lo que hace la función recursiva cuando se conecta el siguiente libro. la próxima vez.
Por ejemplo, recorre un árbol binario en orden intermedio:
(Debería estar escrito por David Mertz)
Definir orden (t):
Si t:
Para x ordenado(t . izquierda):
rendimiento x
rendimiento t .label
Para x en orden (t . derecha):
Rendimiento x
En orden (árbol)
Imprimir
Por supuesto, el siguiente Las capacidades de codificación por pasos también se pueden utilizar en otros aspectos, como descubrir publicaciones de personas enojadas.