Python Iterator

Python Iterator

W tym artykule omówimy iterator Python. Iterator jest obiektem o stanie i pamięta, gdzie jest i kiedy itera. Zwraca pojedynczy obiekt. Używa metod ITER () i Next (). Służy to do tworzenia generatorów pętli, zrozumienia i Pythona.

Konwertuj dowolną sekwencję na iterator za pomocą następującej składni:

ITER (sekwencja)

Aby uzyskać dostęp do następnego elementu, używana jest następna funkcja (). Każdy obiekt w Pythonie, który obsługuje dwie poprzednie metody, nazywa się iterator. Aby to sprawdzić, uruchom metodę wbudowaną dir () na obiekcie.

Przykład: print (dir (lista))

Tutaj lista nie jest iteratorem, ponieważ nie ma metody „__Next__”.

Jeśli spróbujemy uzyskać dostęp do następnych elementów, otrzymujemy wyjątek w następujący sposób:

Aby przekonwertować go jako iterator, przejdź listę do metody ITER, jak pokazano następujące. Następnie widzimy metodę „__Next__”.

Różnica między iteratorem a iterabiną

Iterable oznacza, że ​​możemy zapętlić wartości takie jak lista, krotek, ciąg itc. Wszystkie obiekty mają metodę ITER (), która służy do uzyskania iteratora. Zobaczymy kilka przykładów, aby lepiej to zrozumieć:

Przykład:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
NUMS = [1,2,3,4,5]
NUMSiterator = iTer (NUMS) #same jako NUMSiterator = NUMS.__iter __ ()
# Wewnętrznie wywoła metodę __iter__
print (następny (NUMSITEROR)) # dostęp do 1. elementu
print (Next (NUMSITEROR)) # dostęp do 2. elementu
print (Next (NUMSITEROR)) # dostęp do 3. elementu i tak dalej…
print (następny (NUMSiterator))
print (następny (NUMSiterator))
print (następny (NUMSiterator))

Kiedy dotrzemy do końca listy, podnosi błąd przerwy.

Notatka: Wszystko, co zaczyna się od podwójnego podkreślenia i kończy się na podwójnym podkreśleniu w Pythonie, nazywa się metodą Dunder.

Przypadek użycia iteratorów

  1. Pętla dla iteratorów w tle.

Przykład 1:

Drukujemy każdą postać za pomocą pętli dla.

1
2
3
4
5
s = „Dzień dobry”
Dla Char in s:
Drukuj (char)

Przykład 2:

Drukujemy ten sam ciąg za pomocą iteratorów.

1
2
3
4
5
6
7
8
9
10
11
s = „Dzień dobry”
Word = iter (s)
Choć prawda:
próbować:
item = następny (słowo)
Drukuj (element)
Z wyjątkiem przerwy:
przerwa
  1. Kolejnym przypadkiem użycia iteratora jest dodanie metod następnych () i iter () do naszej klasy i uczynienie go jako iteracją.

Przykład 3:

Aby zbudować własną funkcję zakresu, funkcja zasięgu podaje zakres wartości od początku do końca (wyłączny).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
klasa myrange:
def __init __ (self, start, stop):
samego siebie.val = start
samego siebie.stop = stop
def __iter __ (self):
powrót do siebie
def __Next __ (ja):
Jeśli ja.val> = self.zatrzymywać się:
Podnieś przerwanie
Current = Self.val
samego siebie.val += 1
zwrócić prąd
NUMS = MyRange (1,5)
Drukuj (następny (NUMS))
Drukuj (następny (NUMS))
Drukuj (następny (NUMS))
Drukuj (następny (NUMS))
Drukuj (następny (NUMS))
  1. Innym przypadkiem użycia iteratora są generatory Python. Generatory są normalną metodą, która daje wartość jako wyjście i pamięta stan, gdy jest wywoływany następnym razem. Generatory są również iteratory, ale metody Dunder Iter () i następne () są tworzone automatycznie.

Piszemy poprzednią funkcję za pomocą generatora.

Przykład 4:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def my_range (start, koniec):
prąd = start
podczas gdy obecny < end:
Udaj prąd
prąd += 1
NUMS = my_range (1,5)
Drukuj (następny (NUMS))
Drukuj (następny (NUMS))
Drukuj (następny (NUMS))
Drukuj (następny (NUMS))

Lub możemy wywołać następujące informacje, które wytwarzają to samo wyjście, co poprzedni przykład.

1
2
3
dla NUM in Nums:
druk (num)

Wniosek

Iterator nie musi się kończyć tak długo, jak jest tam wartość; Utrzymuje nam wartość. Pobiera jedną wartość na raz. Jest to naprawdę przydatne podczas pisania programów wydajnych pamięci, w których mamy wiele wartości, których nie możemy pamiętać, jeśli umieścimy je na liście lub krotności. Możemy zapisać zasób za pomocą tego.