'Return the permutation decomposed into a list of transpositions.
It is always possible to express a permutation as the product of
transpositions, see [1]
Examples
>>> from sympy.combinatorics.permutations import Permutation
>>> p = Permutation([[1, 2, 3], [0, 4, 5, 6, 7]])
>>> t = p.transpositions()
>>> t
[(0, 7), (0, 6), (0, 5), (0, 4), (1, 3), (1, 2)]
>>> print(\'\'.join(str(c) for c in t))
(0, 7)(0, 6)(0, 5)(0, 4)(1, 3)(1, 2)
>>> Permutation.rmul(*[Permutation([ti], size=p.size) for ti in t]) == p
True
References
1. http://en.wikipedia.org/wiki/Transposition_%28mathematics%29#Properties'

def transpositions(self):

    a = self.cyclic_form
    res = []
    for x in a:
        nx = len(x)
        if (nx == 2):
            res.append(tuple(x))
        elif (nx > 2):
            first = x[0]
            for y in x[(nx - 1):0:(-1)]:
                res.append((first, y))
    return res
