<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _scatter_list(self, data, owner):
 """Distribute a list from one rank to other ranks in a cyclic manner Parameters data: list of pickle-able data owner: rank that owns the data Returns ------- A list containing the data in a cyclic layout across ranks """


        rank = self.comm.rank
        size = self.comm.size
        subject_submatrices = []
        nblocks = self.comm.bcast(len(data)
                                  if rank == owner else None, root=owner)

        # For each submatrix
        for idx in range(0, nblocks, size):
            padded = None
            extra = max(0, idx+size - nblocks)

            # Pad with "None" so scatter can go to all processes
            if data is not None:
                padded = data[idx:idx+size]
                if extra > 0:
                    padded = padded + [None]*extra

            # Scatter submatrices to all processes
            mytrans = self.comm.scatter(padded, root=owner)

            # Contribute submatrix to subject list
            if mytrans is not None:
                subject_submatrices += [mytrans]

        return subject_submatrices