Собственный бесконечный диапазон?
Имеет ли python собственный итерабель из бесконечного целочисленного ряда?
Я пробовал range(float('inf'))
и iter(int)
, но не работал.
Я, очевидно, могу реализовать собственный генератор по строкам
def int_series(next=1):
while True:
next += 1
yield next
но это похоже на то, что уже должно существовать.
Ответы
Ответ 1
Да. Это itertools.count
:
>>> import itertools
>>> x = itertools.count()
>>> next(x)
0
>>> next(x)
1
>>> next(x)
2
>>> # And so on...
Вы можете указать аргументы start
и step
, хотя stop
не является опцией (для чего xrange
):
>>> x = itertools.count(3, 5)
>>> next(x)
3
>>> next(x)
8
>>> next(x)
13
Ответ 2
Вы можете использовать itertools.count
для этого.
for x in itertools.count():
# do something with x infinite times
Если вы не хотите использовать целое число, возвращаемое count()
, тогда лучше используйте itertools.repeat
:
for _ in itertools.repeat(None):
# do something infinite times