'Returns a list of tensors, whose product is ``self``
Dummy indices contracted among different tensor components
become free indices with the same name as the one used to
represent the dummy indices.
Examples
>>> from sympy.tensor.tensor import TensorIndexType, tensor_indices, tensorhead
>>> Lorentz = TensorIndexType(\'Lorentz\', dummy_fmt=\'L\')
>>> a, b, c, d = tensor_indices(\'a,b,c,d\', Lorentz)
>>> A, B = tensorhead(\'A,B\', [Lorentz]*2, [[1]*2])
>>> t = A(a,b)*B(-b,c)
>>> t
A(a, L_0)*B(-L_0, c)
>>> t.split()
[A(a, L_0), B(-L_0, c)]'

def split(self):

    if (self.args == ()):
        return [self]
    splitp = []
    res = 1
    for arg in self.args:
        if isinstance(arg, Tensor):
            splitp.append((res * arg))
            res = 1
        else:
            res *= arg
    return splitp
