Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def adv_range(seq):
- for element in seq.split(','):
- if '-' in element:
- start, _, stop = element.partition('-')
- yield from range(int(start), int(stop)+1)
- else:
- yield int(element)
- def safe_adv_range(seq, constructor=list):
- try:
- retval = constructor(adv_range(seq))
- except Exception as e:
- print(e)
- retval = constructor()
- return retval
- seq = '1-5, 7, 9, 10-13'
- result = safe_adv_range(seq)
- sorted_result = sorted(result)
- as_set = set(result)
- # or
- as_set = safe_adv_range(seq, set)
- as_tuple = tuple(result)
- # or
- as_tuple = safe_adv_range(seq, tuple)
- # super special trick to get a kind of a Ordered Set
- # this works only since Python 3.6.
- like_ordered_set = safe_adv_range(seq, dict.fromkeys).keys()
- # pre Python3.6
- like_ordered_set = safe_adv_range(seq, collections.OrderedDict.fromkeys).keys()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement