RosettaCodeData/Task/Range-expansion/Python/range-expansion-3.py

10 lines
258 B
Python
Raw Permalink Normal View History

2026-04-30 12:34:36 -04:00
import re
2023-07-01 11:58:00 -04:00
2026-04-30 12:34:36 -04:00
RE_RANGE = re.compile(r"(-?\d+)(?:-(-?\d+))?(?:,|$)")
2023-07-01 11:58:00 -04:00
2026-04-30 12:34:36 -04:00
def expand(expression):
for start, stop in RE_RANGE.findall(expression):
yield from range(int(start), int(stop or start) + 1)
2023-07-01 11:58:00 -04:00
2026-04-30 12:34:36 -04:00
print(list(expand("-6,-3--1,3-5,7-11,14,15,17-20")))