'Get a list of ``Tensor`` objects by distributing ``free`` and ``dum`` indices on the ``components``.'

@staticmethod
def _get_tensors_from_components_free_dum(components, free, dum):

    index_structure = _IndexStructure.from_components_free_dum(components, free, dum)
    indices = index_structure.get_indices()
    tensors = [None for i in components]
    ind_pos = 0
    for (i, component) in enumerate(components):
        prev_pos = ind_pos
        ind_pos += component.rank
        tensors[i] = Tensor(component, indices[prev_pos:ind_pos])
    return tensors
