python_morsels/parse_ranges/parse_ranges.py

20 lines
631 B
Python

def parse_ranges_v1(range_string):
"""This version causes a memory error for huge ranges..."""
ranges = [tuple(map(int, r.split("-"))) for r in range_string.split(",")]
result = []
for start, stop in ranges:
result = [*result, *list(range(start, stop + 1))]
for number in result:
yield number
def parse_ranges_v2(range_string):
"""This version seems more memory efficient."""
ranges = [tuple(map(int, r.split("-"))) for r in range_string.split(",")]
for start, stop in ranges:
for number in range(start, stop + 1):
yield number
parse_ranges = parse_ranges_v2