code: def parse_address_list(addrs):
      
      for addr in addrs.split(','):
          elem = addr.split('-')
          if len(elem) == 1: # a number
              yield int(elem[0])
          elif len(elem) == 2: # a range inclusive
              start, end = list(map(int, elem))
              for i in range(start, end+1):
                  yield i
          else: # more than one hyphen
              raise ValueError('format error in %s' % addr)
docs: Yield each integer from a complex range string like "1-9,12,15-20,23"
  
      >>> list(parse_address_list('1-9,12,15-20,23'))
      [1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 15, 16, 17, 18, 19, 20, 23]
  
      >>> list(parse_address_list('1-9,12,15-20,2-3-4'))
      Traceback (most recent call last):
          ...
      ValueError: format error in 2-3-4