Obtenez tous les diagonales dans une matrice/liste de listes en Python

Je suis à la recherche d'un Pythonic façon d'obtenir toutes les diagonales d'un carré) de la matrice, représenté par une liste de listes.

Supposons que j'ai la matrice suivante:

matrix = [[-2,  5,  3,  2],
          [ 9, -6,  5,  1],
          [ 3,  2,  7,  3],
          [-1,  8, -4,  8]]

Puis les grandes diagonales sont faciles:

l = len(matrix[0])
print [matrix[i][i] for i in range(l)]              # [-2, -6, 7,  8]
print [matrix[l-1-i][i] for i in range(l-1,-1,-1)]  # [ 2,  5, 2, -1]

Mais j'ai du mal à venir avec un moyen de générer toutes les diagonales. La sortie je suis à la recherche d'est:

[[-2], [9, 5], [3,-6, 3], [-1, 2, 5, 2], [8, 7, 1], [-4, 3], [8],
 [2], [3,1], [5, 5, 3], [-2, -6, 7, 8], [9, 2, -4], [3, 8], [-1]]
InformationsquelleAutor BioGeek | 2011-06-11