Latest web development tutorials

iteradores python3 y generadores

iterador

Iteración es una de las características más potentes de Python es una forma de acceder a los elementos de la colección. .

Un iterador es un recorrido del objeto puede recordar la ubicación.

objeto iterador es accesible desde el comienzo del primer elemento de la colección hasta que todos los elementos se accede completamente terminado. Iterador sólo puede moverse hacia delante y no hacia atrás.

Iterador tiene dos métodos básicos: iter () y next ().

Cuerda, lista o tupla objetos se pueden utilizar para crear un iterador:

>>> list=[1,2,3,4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2
>>> 

objeto iterador puede ser utilizado para la declaración poligonal convencional:

#!/usr/bin/python3

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
for x in it:
    print (x, end=" ")

El programa anterior, los resultados de salida son los siguientes:

1 2 3 4

También puede utilizar la función next ():

#!/usr/bin/python3

import sys         # 引入 sys 模块

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象

while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

El programa anterior, los resultados de salida son los siguientes:

1
2
3
4

generador

En Python, utilizando la función de rendimiento se conoce como un generador (generador).

La diferencia es que con una función ordinaria, el generador es una función de retorno iterador sólo se puede utilizar operaciones iterativas, más simples de entender Builder es un iterador.

Al llamar al generador está funcionando el proceso, función de fluencia encontrado se detendrá cada vez y guardar toda la información corriente de funcionamiento, el valor de retorno de rendimiento. Seguir corriendo desde la ubicación actual y el siguiente método next () ejecución.

En el siguiente ejemplo se utiliza el rendimiento dado cuenta de columnas de Fibonacci:

#!/usr/bin/python3

import sys

def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成

while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

El programa anterior, los resultados de salida son los siguientes:

0 1 1 2 3 5 8 13 21 34 55