pythonist cover iterators
Итератор – это интерфейс, позволяющий перебирать элементы последовательности. Он используется, например, в цикле for … in …, но этот механизм скрыт от глаз разработчика. При желании итератор можно получить «в сыром виде», воспользовавшись функцией iter().
Чтобы получить следующий элемент коллекции или строки, нужно передать итератор функции next().
Под капотом функциональность реализуется в методах __iter__ и __next__.
Пример простого итератора:
class SimpleIterator:
def __iter__(self):
return self
def __init__(self, limit):
self.limit = limit
self.counter = 0
def __next__(self):
if self.counter < self.limit:
self.counter += 1
return 1
else:
raise StopIteration
simple_iter = SimpleIterator(5)
for i in simple_iter:
print(i)
# 1
# 1
# 1
# 1
# 1
На базе итераторов в языке появились новые элементы синтаксического сахара: выражения-генераторы и генераторы коллекций. Они позволяют устанавливать условия для отбора.
numbers = range(10) squared = [n ** 2 for n in numbers if n % 2 == 0] print(squared) # [0, 4, 16, 36, 64]
В этом примере из списка чисел отбираются четные числа, а в финальную коллекцию вносятся их квадраты.
Выражения-генераторы не создают целый список заданной длины сразу, а добавляют элементы по мере необходимости.
Очевидно, что генераторы могут выполнять работу функций map и filter. Более того, они справляются с этой задачей эффективнее.
Если вы ищете работу на Python, на Talanto.work сейчас есть варианты для junior, middle, senior…
Рынок Python-вакансий большой, но удобным его назвать сложно. Формально вакансий много, однако в реальном поиске…
Срезы в Python — это больше, чем a[2:7]. В статье — быстрый разбор полезных приёмов:…
В этой статье мы рассмотрим возведение в степень в Python с помощью различных методов, от…
Дубликаты в списке Python — частая проблема. В статье показано, как быстро убрать повторы, в…
Услуга виртуального хостинга на SpaceWeb позволяет арендовать часть сервера (shared-сервера) и разместить на нём свой…