Бесконечный итератор одного объекта
Итератор, создаваемый itertools.repeat()
это вырожденный случай itertools.cycle()
. Вместо последовательности повторяется одно и то же значение. Бесконечно или times
раз:
>>> s = "Птица Говорун отличается умом и сообразительностью"
>>> rep = itertools.repeat(s, times=2)
>>> next(rep)
'Птица Говорун отличается умом и сообразительностью'
>>> next(rep)
'Птица Говорун отличается умом и сообразительностью'
>>> next(rep)
StopIteration...
Классический пример использования itertools.repeat()
– итератор для map()
:
>>> nums = range(10)
>>> squares = map(pow, nums, itertools.repeat(2))
>>> list(squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Все числа последовательности nums
возведены в степень 2
. Итератор вызывается столько раз, сколько необходимо, не нужно думать о числе элементов в последовательности.