Python clase regular 39 - iterador

En este artículo los autores son todos originales, para la reimpresión, por favor indique la fuente: https://www.cnblogs.com/xuexianqi/p/12560524.html

Uno: ¿Qué es un iterador

Iterator se refiere al valor de las herramientas de iteración, iteración es un proceso iterativo, cada iteración se basa en un resultado de la continua, iteración no simplemente de repetición

Dos: ¿Por qué tiene iteradores

Iterator valor iterativo es herramienta utilizada, y se refiere a una pluralidad de tipos de ciclos sacado valor

Ellos son: listas, cadenas, tuplas, diccionarios, colecciones, abra 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

Para hacer frente a las limitaciones del índice basado en el valor del iterador, pitón debe proporcionar un valor de índice no depende de la forma, este es el iterador

Tres: Cómo iterador

1. Los objetos pueden ser iterativo: cada vez que hay objetos incorporados se denominan métodos pueden __iter__ iteración

s1=''
# s1.__iter__()

l=[]
# l.__iter__()

t=(1,)
# t.__iter__()

d={'a':1}
# d.__iter__()

set1={1,2,3}
# set1.__iter__()

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

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)

# print(d_iterator.__next__())
# print(d_iterator.__next__())
# print(d_iterator.__next__())
# print(d_iterator.__next__()) # 抛出异常StopIteration
while True:
    try:
        print(d_iterator.__next__())
    except StopIteration:
        break

print('====>>>>>>') # 在一个迭代器取值取干净的情况下,再对其取值娶不到
d_iterator=d.__iter__()
while True:
    try:
        print(d_iterator.__next__())
    except StopIteration:
        break


l=[1,2,3,4,5]
l_iterator=l.__iter__()

while True:
    try:
        print(l_iterator.__next__())
    except StopIteration:
        break

3. iterables el objeto iterador Detallada

① iterables

("可以转换成迭代器的对象"):内置有__iter__方法对象
 可迭代对象.__iter__(): 得到迭代器对象

② iterador objeto

内置有__next__方法并且内置有__iter__方法的对象
迭代器对象.__next__():得到迭代器的下一个值
迭代器对象.__iter__():得到迭代器的本身,说白了调了跟没调一个样子
dic={'a':1,'b':2,'c':3}

dic_iterator=dic.__iter__()
print(dic_iterator is dic_iterator.__iter__().__iter__().__iter__())

4. iterables: cadenas, listas, tuplas, diccionarios, establecer el objeto de archivo

Iterador objetos: objeto de archivo

s1=''
s1.__iter__()

l=[]
l.__iter__()

t=(1,)
t.__iter__()


d={'a':1}
d.__iter__()

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


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

5.for ciclo funciona: bucle for llame el bucle iterador

# 1.d.__iter__()得到一个迭代器对象
# 2.迭代器对象.__next__()拿到一个返回值,然后将该返回值赋值给k
# 3.循环往复步骤2,直到抛出StopIteration异常for循环会捕捉异常然后结束循环

d={'a':1,'b':2,'c':3}

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循环

Cuatro: iterador resumir las ventajas y desventajas

defecto

1. Proporcionar una secuencia iterativa unificada y el valor de manera no secuencial para el tipo de

2. Evaluación perezosa: objeto iterador está representado por un flujo de datos, puede sólo cuando es necesario llamar al siguiente para calcular un valor, es el iterador en sí, sólo un valor a la vez en la memoria, que puede almacenar ilimitada corriente grande de datos, pero otros tipos de contenedores, tales como listas, todos los elementos deben ser almacenados en la memoria, restringido el tamaño de la memoria, el número de valores se pueden almacenar está limitado

defecto

1. A menos que el agotamiento, o no se puede obtener la longitud iterador

2. Retire 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 próxima una llamada al lado; si quieres iteraciones del mismo objeto, sólo se puede recuperar iter método para crear un nuevo objeto iterador, si hay dos o más ciclos utilizando el mismo repetidor, inevitablemente, no sólo será capaz de entrar en un ciclo valor

Supongo que te gusta

Origin www.cnblogs.com/xuexianqi/p/12560524.html
Recomendado
Clasificación