inside-out range function
Paul Rubin
http
Tue Apr 28 01:50:22 EDT 2009
William Clifford <mr.william.clifford at gmail.com> writes:
> def enrag(start, stop=None, step=1):
> '''Yield a range of numbers from inside-out, evens on left.'''
>>> list(enrag(10))
[8, 6, 4, 2, 0, 1, 3, 5, 7, 9]
ok, but:
>>> list(enrag(10,20))
[18, 16, 14, 12, 10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
is that really what you wanted?
>>> list(enrag(20))
[18, 16, 14, 12, 10, 8, 6, 4, 2, 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
For the 0...n-1 case, I think I'd write
from itertools import chain
def e(n):
max_even = (n-1) & ~1
return chain(xrange(max_even, -1, -2), xrange(1, n, 2))
More information about the Python-list
mailing list