Python de la entrada a la práctica: iterador de funciones

Blog de referencia: Egon

Tabla de contenido

1. Introducción a los iteradores

1.1 Objetos iterables

1.2 Objetos iteradores

En segundo lugar, el principio del bucle for

1. Principios básicos

2. Presta atención a un detalle

3. Ventajas y desventajas de los iteradores

3.1 Ventajas

3.2 Desventajas


1. Introducción a los iteradores

Un iterador es una herramienta utilizada para iterar valores , y la iteración es una actividad que repite el proceso de retroalimentación, y su propósito suele ser acercarse a la meta o resultado deseado. Cada repetición del proceso se denomina "elección", y el resultado de la selección se utilizará como el valor inicial de la siguiente selección, y la repetición simple no es una selección

1.1 Objetos iterables

Es sencillo seleccionar y reemplazar valores mediante indexación , pero solo es aplicable a tipos de secuencia: cadenas, listas y tuplas . Para tipos no seriados como diccionarios y colecciones sin índices, es necesario encontrar una forma de seleccionar valores sin depender de los índices, que utiliza selectores . Si desea comprender qué es un iterador, debe descubrir un concepto muy importante de antemano: un objeto de generación opcional (Iterable). En términos de forma gramatical, los objetos con métodos _iter_ incorporados son objetos de generación opcionales, cadenas, listas, tuplas, diccionarios, colecciones y archivos abiertos son todos objetos de generación opcionales:

{'name':'egon'}.__iter__
{7,8,9}.__iter__
……

1.2 Objetos iteradores

El resultado devuelto al llamar al método obj.iter() es un objeto Iterator . El objeto selector es un objeto con métodos iter y next incorporados . El archivo abierto en sí mismo es un objeto iterador . Ejecute el método selector object.iter() para obtener el selector en sí, y ejecute el método selector.next () calculará el siguiente valor en el selector.

El selector es un método de valor iterativo unificado e independiente del índice proporcionado por Python. Siempre que haya varios "valores", sin importar el tipo de secuencia o el tipo que no sea de secuencia, el valor se puede obtener de acuerdo con el selector.

>>> s={1,2,3} # 可迭代对象s
>>> i=iter(s)  # 本质就是在调用s.__iter__(),返回s的迭代器对象i,
>>> next(i) # 本质就是在调用i.__next__()
1
>>> next(i)
2
>>> next(i)
3
>>> next(i)  #抛出StopIteration的异常,代表无值可取,迭代结束

En segundo lugar, el principio del bucle for

1. Principios básicos

¡El propósito del iterador es permitir que los objetos que no se pueden indexar tengan un valor uniforme!

 Con el iterador, podemos seleccionar el valor sin depender del índice. El método de implementación para usar el ciclo while es el siguiente ( para usar la siguiente operación, primero debe usar iter para convertir el objeto iterable en un objeto iterador )

goods=['mac','lenovo','acer','dell','sony']
i=iter(goods) #每次都需要重新获取一个迭代器对象
while True:
    try:
        print(next(i))
    except StopIteration: #捕捉异常终止循环
        break

El ciclo for también se conoce como  ciclo iterativo In puede ser seguido por cualquier objeto de generación opcional El ciclo while anterior se puede abreviar como

goods=['mac','lenovo','acer','dell','sony']
for item in goods:   
    print(item)

Cuando el ciclo for está funcionando, primero llamará al método iter integrado en los objetos de generación opcionales para obtener un objeto selector, luego llamará al siguiente método del objeto iterador para asignar el valor obtenido al elemento y ejecutar el cuerpo del ciclo una vez . El ciclo se repite hasta que se detecta la excepción Stoplteration y finaliza la iteración. 

2. Presta atención a un detalle

La entrada del ciclo for actúa sobre el objeto iterable, y luego transforma el objeto iterable dos veces, y finalmente lo asigna al elemento (primero llame a iter, luego llame a next para asignar el valor), luego, ¿puede estar dentro del alcance el objeto iterador?

Poder

Necesitamos entender una cosa: aunque c es un objeto iterador, el método iter aún se llamará después de in, pero al final c sigue siendo un objeto iterador, ¡así que no lo afecta!

3. Ventajas y desventajas de los iteradores

Según el valor de selección del índice, todo el estado de la selección se guarda en el índice ( todos los datos se cargan en la memoria al principio ), y el método de selección basado en el selector ya no necesita un índice, y todo la selección El estado se guarda en el selector ( cargando datos uno por uno, solo uno a la vez ), pero este método de procesamiento tiene ventajas y desventajas:

3.1 Ventajas

1. Proporcionar un método unificado para seleccionar valores para tipos de secuencia y no secuencia .

2. Cálculo emocional: el objeto selector representa un flujo de datos, y puede llamar a next para calcular un valor solo cuando sea necesario. En lo que respecta al selector en sí, solo hay un valor en la memoria al mismo tiempo, por lo que los datos son ilimitados. los flujos se pueden almacenar, mientras que para otros tipos de contenedores, como las listas, todos los elementos deben almacenarse en la memoria, limitado por el tamaño de la memoria, la cantidad de valores que se pueden almacenar es limitada.

3.2 Desventajas

1. A menos que se agote, no se puede obtener la longitud del iterador

2. Solo se puede eliminar un valor y no se puede volver al principio. Es más como uno único. El único objetivo después de que se genera el selector es ejecutar repetidamente el siguiente método hasta que se agote el valor, de lo contrario se quedará en una posición determinada y esperará la próxima vez que llame al siguiente; si desea seleccionar el mismo objeto nuevamente, solo puede volver a llamar al método iter para crear un nuevo objeto selector. Si hay dos o más ciclos que usan el mismo selector, debe haber solo un ciclo puede obtener el valor

Supongo que te gusta

Origin blog.csdn.net/weixin_43507744/article/details/126571385
Recomendado
Clasificación