tg-me.com/BookPython/3545
Last Update:
В Python можно спутать две вещи: итерируемые объекты (iterables) и итераторы (iterators).
Итерируемые объекты — это объекты, которые можно перебирать, то есть из них можно извлекать значения по одному, возможно, бесконечно. Обычно итерируемыми объектами являются коллекции, такие как массивы, множества, списки и т. д.
Есть два способа сделать объект итерируемым. Первый — реализовать метод __getitem__
:
class Iterable:
def __getitem__(self, i):
if i > 10:
raise IndexError
return i
print(list(Iterable()))
Вывод:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Второй способ — определить метод
__iter__
, который возвращает итератор. Итератор — это объект, имеющий метод __next__
, который при каждом вызове возвращает следующее значение из исходного итерируемого объекта:
class Iterator:
def __init__(self):
self._i = 0
def __next__(self):
i = self._i
if i > 10:
raise StopIteration
self._i += 1
return i
class Iterable:
def __iter__(self):
return Iterator()
print(list(Iterable()))
Вывод:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Обычно итератор также имеет метод
__iter__
, который просто возвращает self
. Это позволяет самому итератору быть итерируемым, то есть большинство итераторов также являются итерируемыми объектами.👉@BookPython
BY Библиотека Python разработчика | Книги по питону
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/BookPython/3545