I am trying to find a highest common factor and want to start at the upper end, How can I create a generator in python that starts at n and decrements by -1?
def drange(end):
i = 1
while i > end:
yield i
i += 1
I am trying to find a highest common factor and want to start at the upper end, How can I create a generator in python that starts at n and decrements by -1?
def drange(end):
i = 1
while i > end:
yield i
i += 1
In Python 3 you can use
reversed(range(1000000000000000000000))
This works because the range object has a __reversed__
method.
Python 2's xrange can't handle numbers that big, so you'll need a generator function:
def downrange(n):
while n > 0:
yield n
n -= 1
for i in downrange(n):
print i
Your generator is easily adapted:
def drange(end):
i = end
while i > 0:
yield i
i -= 1
This counts down from end
to 1:
>>> def drange(end):
... i = end
... while i > 0:
... yield i
... i -= 1
...
>>> for n in drange(3):
... print n
...
3
2
1
If you want to count down to 0, test for i > -1
.
The simplest answer I can think of is to use itertools.count
>>> from itertools import count
>>> p = count(10**10,-1)
>>> next(p) # Gives you the reverse decremented generator