Is there a straight-forward generator expression that can yield infinite elements?
This is a purely theoretical question. No need for a "practical" answer here :)
For example, it is easy to make a finite generator:
my_gen = (0 for i in xrange(42))
However, to make an infinite one I need to "pollute" my namespace with a bogus function:
def _my_gen():
while True:
yield 0
my_gen = _my_gen()
Doing things in a separate file and import
-ing later doesn't count.
I also know that itertools.repeat
does exactly this. I'm curious if there is a one-liner solution without that.
itertools
provides three infinite generators:
count(start=0, step=1)
: 0, 1, 2, 3, 4, ...
cycle(p)
: p[0], p[1], ..., p[-1], p[0], ...
repeat(x, times=∞)
: x, x, x, x, ...
I don't know of any others in the standard library.
Since you asked for a one-liner:
__import__("itertools").count()