Latest web development tutorials

Python3 итераторы и генераторы

Итератор

Итерация является одним из наиболее мощных функций Python способ получить доступ к элементам коллекции. ,

Итератор является обходом объекта может запомнить расположение.

Итератор объект доступен с начала первого элемента коллекции, пока все элементы не будут полностью доступ к которым закончился. Итератор может двигаться только вперед, а не назад.

Итератор имеет два основных метода: ITER () и Next ().

Строка, список или кортеж объекты могут быть использованы для создания итератора:

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

Объект итератора может быть использован для обычного заявления траверсы:

#!/usr/bin/python3

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

Вышеприведенная программа, выходные результаты являются следующие:

1 2 3 4

Вы также можете использовать функцию следующего ():

#!/usr/bin/python3

import sys         # 引入 sys 模块

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

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

Вышеприведенная программа, выходные результаты являются следующие:

1
2
3
4

генератор

В Python, с использованием функции текучести известна как генератор (генератор).

Разница заключается в том, что с обычной функцией, генератор является функцией возврата итератора может быть использован только итеративные операции, более простые для понимания Builder является итератором.

Вызов генератор работает процесс, встречается функция текучести сделает паузу каждый раз, и сохранить все текущие оперативной информации, возвращаемого значения доходности. Продолжайте работать от текущего местоположения и следующего выполнения метода следующий ().

В следующем примере используется доходность реализуется столбцы Фибоначчи:

#!/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()

Вышеприведенная программа, выходные результаты являются следующие:

0 1 1 2 3 5 8 13 21 34 55