Generate a sequence of numbers in Python
>>> ','.join('{},{}'.format(i, i + 1) for i in range(1, 100, 4))'1,2,5,6,9,10,13,14,17,18,21,22,25,26,29,30,33,34,37,38,41,42,45,46,49,50,53,54,57,58,61,62,65,66,69,70,73,74,77,78,81,82,85,86,89,90,93,94,97,98'
That was a quick and quite dirty solution.
Now, for a solution that is suitable for different kinds of progression problems:
def deltas(): while True: yield 1 yield 3def numbers(start, deltas, max): i = start while i <= max: yield i i += next(deltas)print(','.join(str(i) for i in numbers(1, deltas(), 100)))
And here are similar ideas implemented using itertools:
from itertools import cycle, takewhile, accumulate, chaindef numbers(start, deltas, max): deltas = cycle(deltas) numbers = accumulate(chain([start], deltas)) return takewhile(lambda x: x <= max, numbers)print(','.join(str(x) for x in numbers(1, [1, 3], 100)))
Includes some guessing on the exact sequence you are expecting:
>>> l = list(range(1, 100, 4)) + list(range(2, 100, 4))>>> l.sort()>>> ','.join(map(str, l))'1,2,5,6,9,10,13,14,17,18,21,22,25,26,29,30,33,34,37,38,41,42,45,46,49,50,53,54,57,58,61,62,65,66,69,70,73,74,77,78,81,82,85,86,89,90,93,94,97,98'
As one-liner:
>>> ','.join(map(str, sorted(list(range(1, 100, 4))) + list(range(2, 100, 4))))
(btw. this is Python 3 compatible)