НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ

Python Підручник

Python СТАРТ Python Інтро Python Встановлення Python Синтаксис Python Коментарі Python Змінні Python Типи даних Python Числа Python Кастинг Python Рядки Python Булеві Python Оператори Python Списки Python Кортежі Python Набори Python Словники Python If...Else Python Цикли While Python Цикли For Python Функції Python Лямбда Python Масиви Python Класи/Об’єкти Python Успадкування Python Ітератори Python Поліморфізм Python Область дії (видимості) Python Модулі Python Дати Python Математика Python JSON Python RegEx Python PIP Python Try...Except Python Користувацький ввод Python Форматування рядка

Обробка файлів

Python Обробка файлів Python Читання файлів Python Запис/Створення файлів Python Видалення файлів

Python Modules

NumPy Tutorial Pandas Tutorial SciPy Tutorial Django Tutorial

Python Matplotlib

Matplotlib Інтро Matplotlib Початок роботи Matplotlib Pyplot Matplotlib Складання графіка Matplotlib Маркери Matplotlib Лінія Matplotlib Лейбли Matplotlib Сітка Matplotlib Subplots Matplotlib Scatter Matplotlib Бари Matplotlib Гістограми Matplotlib Кругові діаграми

Машинне навчання

Початок роботи Середній режим Стандартне відхилення Перцентиль Розподіл даних Звичайний розподіл даних Діаграма розкиду Лінійна регресія Поліноміальна регресія Множинна регресія Шкала Тренування/Тест Дерево рішень Confusion Matrix Hierarchical Clustering Logistic Regression Grid Search Categorical Data K-means Bootstrap Aggregation Cross Validation AUC - ROC Curve K-nearest neighbors

Python MySQL

MySQL Початок роботи MySQL CREATE DATABASE MySQL CREATE TABLE MySQL INSERT INTO MySQL SELECT MySQL WHERE MySQL ORDER BY MySQL DELETE FROM MySQL DROP TABLE MySQL UPDATE MySQL LIMIT MySQL JOIN

Python MongoDB

MongoDB Початок роботи MongoDB Створення бази даних MongoDB Створити колекцію MongoDB Вставити MongoDB Знайти MongoDB Запит MongoDB Сортувати MongoDB Видалити MongoDB Drop колекція MongoDB Оновлення MongoDB Ліміт

Python Reference

Python Огляд Python Вбудовані функції Python Рядкові методи Python Методи списку Python Словникові методи Python Кортежні методи Python Set методи Python Файлові методи Python Ключові слова Python Винятки Python Глосарій

Довідник модулів

Модуль Random Модуль Запитів Модуль Статистики Модуль Math Модуль cMath

Python Як зробити?

Видалити копії списків Обернути рядок Додати два числа

Python Приклади

Python Приклади Python Компілятор Python Вправи Python Вікторина Python Bootcamp Python Сертифікат

Python. W3Schools українською. Уроки для початківців

En Es

Python Ітератори


Python Ітератори

Ітератор — це об’єкт, який містить лічильну кількість значень.

Ітератор — це об’єкт, який можна повторювати, що означає, що ви можете проходити через усі значення.

Технічно в Python ітератор — це об’єкт, який реалізує протокол ітератора, який складається з методів __iter__() та __next__().


Ітератор проти ітераційних

Списки, кортежі, словники та набори є ітерованими об’єктами. Це ітераційні контейнери, з яких можна отримати ітератор.

Усі ці об’єкти мають метод iter(), який використовується для отримання ітератора:

Приклад

Повертає ітератор із кортежу та друкує кожне значення:

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))
Спробуйте самі »

Навіть рядки є ітерованими об’єктами та можуть повертати ітератор:

Приклад

Рядки також є ітерованими об’єктами, що містять послідовність символів:

mystr = "banana"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
Спробуйте самі »

Цикл через ітератор

Ми також можемо використовувати цикл for для повторення об’єкта, який можна повторити:

Приклад

Ітерація значень кортежу:

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)
Спробуйте самі »

Приклад

Ітерація символів рядка:

mystr = "banana"

for x in mystr:
  print(x)
Спробуйте самі »

Цикл for фактично створює об’єкт ітератора та виконує метод next() для кожного циклу.


Створити ітератор

Щоб створити об’єкт/клас як ітератор, потрібно реалізувати методи __iter__() та __next__() до вашого об’єкта.

Як ви дізналися з розділу Класи/об’єкти Python, усі класи мають функцію під назвою __init__(), який дозволяє виконати деяку ініціалізацію під час створення об’єкта.

Метод __iter__() діє подібно, ви можете виконувати операції (ініціалізацію тощо), але завжди повинні повертати сам об’єкт ітератора.

Метод __next__() також дозволяє виконувати операції та повертати наступний елемент у послідовності.

Приклад

Створіть ітератор, який повертає числа, починаючи з 1, і кожна послідовність буде збільшуватися на одиницю (повертає 1,2,3,4,5 тощо):

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
Спробуйте самі »

StopIteration / Зупинити ітерацію

Наведений вище приклад триватиме вічно, якби у вас було достатньо інструкцій next() або якби він використовувався в циклі for.

Щоб ітерація не тривала вічно, ми можемо використати інструкцію StopIteration.

У методі __next__() ми можемо додати умову завершення, щоб викликати помилку, якщо ітерація виконується певну кількість разів:

Приклад

Зупиніться після 20 ітерацій:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)
Спробуйте самі »