05- iterador

En primer lugar, ¿qué es un iterador

Iterator se refiere al valor de las herramientas de iteración, iteración es un proceso iterativo, cada iteración es el resultado de vivir en un continuo, iteración no simplemente de repetición

En segundo lugar, ¿por qué tener iteradores

Iterator valor iterativo es herramienta utilizada, y se relaciona con el tipo de la pluralidad de ciclos son llevados a cabo: lista de cadenas, tuplas, diccionarios, set, abrir el archivo

l=['egon','liu','alex']
    i=0
    while i < len(l):
        print(l[i])
        i+=1

de manera iterativa descrito anteriormente se aplica sólo al valor de los tipos de datos indexados: lista, cuerda, una tupla, basado en un índice para hacer frente a las limitaciones de pitón iterador debe proporcionar un valor no depende del valor del modo de índice, este es el iterador

En tercer lugar, el uso de iteradores

1. Los objetos pueden ser iterativo: Cada vez construida ** ITER ** método iterativo se llama objeto puede ser

str = ""
str.__iter__()

list = []
list.__iter__()

tuple = (1,)
tuple.__iter__()

dict = {}
dict.__iter__()

set = {1,2,3}
set.__iter__()

with open('a.txt',mode='w') as f:
    f.__iter__()

2. El método de __iter__ objeto puede llamar al iterador iterador convertirá objeto

d={'a':1,'b':2,'c':3}
d_iterator=d.__iter__()
print(d_iterator) # output:<dict_keyiterator object at 0x0000022A041B54F0>
print(d_iterator.__next__())	# output:a
print(d_iterator.__next__())	# output:b
print(d_iterator.__next__())	# output:c
print(d_iterator.__next__())	# output:抛出异常StopIteration

# 那该如何不会出现异常呢
while True:
    try:
        print(d_iterator.__next__())
    except StopIteration:
        break

3. iterables el objeto iterador Detallada

1) iterables

Iterables ( "puede ser convertido en un objeto iterador"): Objetos Método __iter__ construido

# 用法
可迭代对象.__iter__()	# 得到迭代器对象

2) objeto iterador

Iterator objeto: un método __next__ construido y objetos incorporados tienen métodos __iter__

# 用法
迭代器对象.__next__()# 得到迭代器的下一个值
迭代器对象.__iter__()# 得到迭代器的本身,说白了调了跟没调一个样子

# 示例
dic={'a':1,'b':2,'c':3}
dic_iterator=dic.__iter__()
print(dic_iterator is dic_iterator.__iter__().__iter__().__iter__()) # output:a,b,c,True

4. iterables

Iterables: cadenas, listas, tuplas, diccionarios, colecciones, objetos de archivo

Iterador objetos: objeto de archivo

str = ""
str.__iter__()

list = []
list.__iter__()

tuple = (1,)
tuple.__iter__()

dict = {}
dict.__iter__()

set = {1,2,3}
set.__iter__()

with open('a.txt',mode='w') as f:
    f.__iter__()
    f.__next__()

Funciona ciclo 5.for

para completar un ciclo de bucle puede ser llamado iterativo

d={'a':1,'b':2,'c':3}
# 1、d.__iter__()得到一个迭代器对象
# 2、迭代器对象.__next__()拿到一个返回值,然后将该返回值赋值给k
# 3、循环往复步骤2,直到抛出StopIteration异常for循环会捕捉异常然后结束循环
for k in d:
   	print(k)
    
with open('a.txt',mode='rt',encoding='utf-8') as f:
    for line in f: # f.__iter__()
        print(line)
        
list('hello')	# 原理同for循环

6. Un resumen de las ventajas y desventajas iterador

1. Ventajas

  • Proporciona una manera unificada el valor de secuencia iterativa y no tipos de secuencias.
  • Lazy evaluación: objeto iterador está representado por un flujo de datos, puede llamar sólo cuando es necesario para calcular un valor de al lado es el iterador en sí, sólo un valor a la vez en la memoria, que puede almacenar infinita flujos de datos para otros tipos de recipientes, tales como listas, todos los elementos deben ser almacenados en la memoria, tamaño de la memoria restringida, el número de valores se pueden almacenar está limitado.

2. deficiencias

  • A menos que el agotamiento, o no se puede obtener la longitud iterador
  • Eliminar sólo un valor, no de nuevo al principio, más como un 'one-off', el único objetivo es repetir el iterador producir el siguiente método hasta que el valor del agotamiento, de lo contrario se quedará en un solo lugar, a la espera de la siguiente llamada siguiente; si quieres iteraciones del mismo objeto, sólo se puede recordar iter método para crear un nuevo objeto iterador, si hay dos o más ciclos utilizando el mismo repetidor, inevitablemente, habrá solamente capaz de tomar a un valor de reciclaje.

Supongo que te gusta

Origin www.cnblogs.com/zhuyouai/p/12561431.html
Recomendado
Clasificación