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]