Сообщить об ошибке.

Функция repeat() модуля itertools в Python

Ленивое повторение объекта

Синтаксис:

import itertools

itertools.repeat(object[, times])

Параметры:

  • object - объект Python, например функция или [список],
  • times - количество повторений.

Возвращаемое значение:

Описание:

Функция repeat() модуля itertools создает итератор, который возвращает объект снова и снова. Работает бесконечно, если не указан аргумент times.

Функция itertools.repeat является ленивой. Она использует только память, необходимую для одного элемента. С другой стороны, идиомы (a,) * n и [a] * n создают n копий объекта в памяти. Для пяти элементов идиома умножения, вероятно, лучше, но вы можете заметить проблему с ресурсами, если вам придется что-то повторять, скажем, миллион раз.

Функция используется в качестве аргумента для map() для инвариантных параметров вызываемой функции. Также используется с zip() для создания инвариантной части записи кортежа.

Еще можно просто работать с единым списком, а если список большой, то itertools.repeat() сэкономит вам память.

Функция itertools.repeat() примерно эквивалентна следующему коду:

def repeat(object, times=None):
    # repeat(10, 3) --> 10 10 10
    if times is None:
        while True:
            yield object
    else:
        for i in range(times):
            yield object

Примеры использования:

Обычное использование для itertools.repeat() - предоставить поток постоянных значений для map() или zip():

>>> from itertools import repeat
# квадраты элементов списка
>>> list(map(pow, range(10), repeat(2)))
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# кубы элементов списка
>>> list(map(pow, range(10), repeat(3)))
# [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]