Latest web development tutorials

Python3 iteratory i generatory

iterator

Iteracja jest jednym z najbardziej zaawansowanych funkcji Pythona jest sposób, aby uzyskać dostęp do elementów kolekcji. ,

Iterator jest przejście przez obiekt może zapamiętać lokalizację.

Iterator obiekt jest dostępny od początku pierwszego elementu kolekcji, aż wszystkie elementy są dostępne całkowicie zakończony. Iterator może poruszać się tylko do przodu, nie do tyłu.

Iterator ma dwie podstawowe metody: ITER (), a następnie ().

String, liście lub krotkowe obiekty mogą być wykorzystywane do tworzenia iterator:

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

Obiekt iterator można stosować do tradycyjnego rachunku przemieszczenia:

#!/usr/bin/python3

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

Powyższy program, wyniki wyjściowe są następujące:

1 2 3 4

Można również skorzystać z następnej funkcji ():

#!/usr/bin/python3

import sys         # 引入 sys 模块

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

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

Powyższy program, wyniki wyjściowe są następujące:

1
2
3
4

generator

W Pythonie użyciu funkcji wydajności są znane jako generator (generatora).

Różnica polega na tym, że ze zwykłej funkcji, generator jest funkcją powrotu iterator może być używany tylko iteracyjnych operacji, bardziej proste do zrozumienia Builder jest iterator.

Wywołanie generator jest uruchomiony proces, napotkał Funkcja wydajność będzie wstrzymać za każdym razem i zapisywanie wszystkich informacji operacyjnego prądu, wartości zwracanej wydajnością. Kontynuuj pracę z bieżącej lokalizacji i następnym wykonaniu metoda next ().

W poniższym przykładzie użyto Wydajność realizowane Fibonacciego kolumny:

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

Powyższy program, wyniki wyjściowe są następujące:

0 1 1 2 3 5 8 13 21 34 55