Funkcje iter() i next()
Lekcja 2 z 13 w kursie Iteratory w Pythonie w Coddy.
W Pythonie funkcje iter() i next() są podstawą pracy z iteratorami. Przyjrzyjmy się tym funkcjom i zobaczmy, jak używać ich do tworzenia i obsługi podstawowych iteratorów.
Funkcja iter()
Funkcja iter() służy do tworzenia obiektu iteratora z obiektu iterowalnego. Jej podstawowa składnia to:
iter(iterable)Wywołana na obiekcie iterowalnym funkcja iter() zwraca obiekt iteratora, którego można używać do uzyskiwania kolejnych elementów obiektu iterowalnego.
Funkcja next()
Funkcja next() służy do pobierania następnego elementu z iteratora. Jej podstawowa składnia to:
next(iterator)Za każdym razem, gdy wywołasz next() na iteratorze, funkcja zwróci następny element z sekwencji. Jeśli nie ma już więcej elementów, zgłosi wyjątek StopIteration.
Używanie iter() i next()
Zobaczmy, jak te funkcje współpracują ze sobą:
# Utwórz listę (obiekt iterowalny)
fruits = ['apple', 'banana', 'cherry']
# Utwórz iterator na podstawie listy
fruit_iterator = iter(fruits)
# Użyj next(), aby pobrać elementy z iteratora
print(next(fruit_iterator)) # Wynik: apple
print(next(fruit_iterator)) # Wynik: banana
print(next(fruit_iterator)) # Wynik: cherry
# print(next(fruit_iterator)) # Spowodowałoby to zgłoszenie wyjątku StopIteration
W tym przykładzie tworzymy iterator fruit_iterator z listy fruits, używając funkcji iter(). Następnie używamy funkcji next(), aby pobrać każdy element iteratora.
Tworzenie podstawowego iteratora niestandardowego
Możesz także utworzyć własny iterator, implementując metody __iter__() i __next__() w klasie:
class CountUp:
def __init__(self, start, end):
self.current = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.current > self.end:
raise StopIteration
else:
self.current += 1
return self.current - 1
# Użycie własnego iteratora
counter = CountUp(1, 3)
print(next(counter)) # Wynik: 1
print(next(counter)) # Wynik: 2
print(next(counter)) # Wynik: 3
Ten niestandardowy iterator CountUp zlicza w górę od liczby początkowej do końcowej. Metoda __iter__() zwraca sam obiekt iteratora, a metoda __next__() określa sposób pobierania następnej wartości.
Zrozumienie działania iter() i next() jest kluczowe podczas pracy z iteratorami w Pythonie, ponieważ pozwala efektywnie tworzyć sekwencje danych i nimi zarządzać.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wyzwanie
ŁatwyUtwórz iterator, który generuje ciąg liczb parzystych aż do podanego limitu. Użyj funkcji iter() i next(), aby zaimplementować ten iterator.
Otrzymujesz:
- Liczbę całkowitą
limitjako dane wejściowe
Twój iterator powinien:
- Generować liczby parzyste, zaczynając od 2
- Zatrzymać się, gdy osiągnie podany limit lub go przekroczy
Wypisz każdą wygenerowaną liczbę parzystą w nowej linii.
Dane wejściowe zostaną przekazane jako ciąg znaków reprezentujący liczbę całkowitą.
Spróbuj swoich sił
# Wczytaj dane wejściowe
limit = int(input())
# TODO: Napisz tutaj swój kod
# Zaimplementuj iterator liczb parzystych, używając iter() i next()
# Przykład, jak wyświetlić wynik
# print(next_even_number)Wszystkie lekcje w sekcji Iteratory w Pythonie
2Tworzenie własnych iteratorów
Implementowanie __iter__()Implementowanie __next__()Iteratory nieskończonePoćwicz samodzielnie: Kompilator Python online