<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set(self, addr, values):
 """ Write list ``values`` to ``addr`` memory location in DataBank. :param addr: Address to write to :param values: list of values to write :except IndexError: Raised if address range falls outside valid range """

        addr -= self._start_addr
        end = addr + len(values)
        if not 0 <= addr <= end <= len(self._data):
            addr += self._start_addr
            raise IndexError("Invalid address range [{:#06x} - {:#06x}]"
                             .format(addr, addr + len(values)))
        self._data[addr:end] = values