Назад к вопросам
Junior
344
questionbank
Какие итераторы вы знаете?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
В Python итератор — это объект, который реализует методы __iter__() и __next__(). Метод __iter__() возвращает сам объект-итератор, а __next__() возвращает следующий элемент последовательности. Когда элементы заканчиваются, __next__() вызывает исключение StopIteration.
Из встроенных типов данных и функций, которые возвращают итераторы, можно выделить:
- Списки (
list) - Кортежи (
tuple) - Строки (
str) - Множества (
set) - Словари (
dict) (по умолчанию итерируются по ключам) - Итераторы, создаваемые генераторными выражениями или функциями-генераторами.
- Функции
range(),enumerate(),zip(),map(),filter().
Примеры:
# Итератор из списка
my_list = [1, 2, 3]
list_iterator = iter(my_list)
# Итератор из строки
my_string = "abc"
string_iterator = iter(my_string)
# Итератор из диапазона
range_iterator = range(5) # range() уже возвращает итератор
# Итератор из генераторного выражения
gen_expr_iterator = (x**2 for x in range(5))
# Итератор из функции enumerate
enumerate_iterator = enumerate(['a', 'b', 'c'])
# Итератор из функции zip
zip_iterator = zip([1, 2], ['a', 'b'])
Можно создать свои собственные итераторы, реализовав соответствующие методы.
class MyIterator:
def __init__(self, limit):
self.limit = limit
self.current = 0
def __iter__(self):
return self # Метод возвращает сам объект
def __next__(self):
if self.current < self.limit:
value = self.current
self.current += 1
return value
else:
raise StopIteration # Вызываем исключение при окончании итерации
# Использование пользовательского итератора
custom_iterator = MyIterator(3)
# Пример итерации
for item in custom_iterator:
print(item)
# Вывод:
# 0
# 1
# 2