BOOKPYTHON Telegram 3545
В 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
👍2🔥1



tgoop.com/BookPython/3545
Create:
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 разработчика | Книги по питону


Share with your friend now:
tgoop.com/BookPython/3545

View MORE
Open in Telegram


Telegram News

Date: |

While the character limit is 255, try to fit into 200 characters. This way, users will be able to take in your text fast and efficiently. Reveal the essence of your channel and provide contact information. For example, you can add a bot name, link to your pricing plans, etc. Content is editable within two days of publishing The imprisonment came as Telegram said it was "surprised" by claims that privacy commissioner Ada Chung Lai-ling is seeking to block the messaging app due to doxxing content targeting police and politicians. How to create a business channel on Telegram? (Tutorial) Telegram channels enable users to broadcast messages to multiple users simultaneously. Like on social media, users need to subscribe to your channel to get access to your content published by one or more administrators.
from us


Telegram Библиотека Python разработчика | Книги по питону
FROM American