Встречается на собеседованиях • сегодня
Может ли итератор быть генератором и наоборот
Да, итератор может быть генератором, и генератор — это частный случай итератора.
- Генератор — это функция с
yield, которая автоматически создаёт итератор. - Итератор — любой объект с методами
__iter__()и__next__().
Пример генератора как итератора:
python
def count_up_to(n): # генераторная функция
i = 1
while i <= n:
yield i
i += 1
counter = count_up_to(3) # генератор (итератор)
print(next(counter)) # 1
print(next(counter)) # 2
text
**Пример итератора без генератора:**
```python
class Counter:
def __init__(self, limit):
self.limit = limit
self.current = 1
def __iter__(self):
return self
def __next__(self):
if self.current > self.limit:
raise StopIteration
value = self.current
self.current += 1
return value
counter = Counter(3) # итератор (не генератор)
print(next(counter)) # 1Генераторы удобны для ленивых вычислений, а кастомные итераторы дают больше контроля.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы