def MatrixMinor(x,i,j): y = x[:] del(y[i]) y = zip(*y) del(y[j]) return zip(*y) def MatrixDet(x): l=len(x) if l==1: return x[0][0] j=0 return sum([(-1)**(i+j)*x[i][j]*MatrixDet(MatrixMinor(x,i,j)) for i in range (l)])