在python上用Leibniz公式求nxn矩阵的行列式

在python上用Leibniz公式求nxn矩阵的行列式,python,Python,我试着用python编写排列。我正在寻找关于如何使用python 3.7中的Leibniz公式编写行列式的建议。如果您愿意使用numpy,可以使用 我建议不要使用莱布尼茨公式。效率不高。 如果必须,您可以使用我从中获取的代码: 其中嵌套函数的定义如下: def perm_parity(lst): parity = 1 lst = lst[:] for i in range(0,len(lst) - 1): if lst[i] != i:

我试着用python编写排列。我正在寻找关于如何使用python 3.7中的Leibniz公式编写行列式的建议。如果您愿意使用numpy,可以使用

我建议不要使用莱布尼茨公式。效率不高。 如果必须,您可以使用我从中获取的代码:

其中嵌套函数的定义如下:

def perm_parity(lst):
    parity = 1
    lst = lst[:]
    for i in range(0,len(lst) - 1):
        if lst[i] != i:
            parity *= -1
            mn = argmin(lst[i:]) + i
            lst[i],lst[mn] = lst[mn],lst[i]
    return parity 

def argmin(lst):
    return lst.index(min(lst))

def permutations(lst):
    if len(lst) <= 1:
        return [lst]
    templst = []
    for i in range(len(lst)):
        part = lst[:i] + lst[i+1:]
        for j in permutations(part):
            templst.append(lst[i:i+1] + j)
    return templst
def perm_奇偶校验(lst):
奇偶校验=1
lst=lst[:]
对于范围(0,len(lst)-1内的i:
如果lst[i]!=一:
奇偶校验*=-1
mn=argmin(lst[i:])+i
lst[i],lst[mn]=lst[mn],lst[i]
返回奇偶校验
def argmin(lst):
返回一级索引(最小(一级))
def置换(lst):

如果len(lst)到目前为止你尝试了什么?出了什么问题?为什么莱布尼茨的公式是明确的?还有更有效的方法。
def perm_parity(lst):
    parity = 1
    lst = lst[:]
    for i in range(0,len(lst) - 1):
        if lst[i] != i:
            parity *= -1
            mn = argmin(lst[i:]) + i
            lst[i],lst[mn] = lst[mn],lst[i]
    return parity 

def argmin(lst):
    return lst.index(min(lst))

def permutations(lst):
    if len(lst) <= 1:
        return [lst]
    templst = []
    for i in range(len(lst)):
        part = lst[:i] + lst[i+1:]
        for j in permutations(part):
            templst.append(lst[i:i+1] + j)
    return templst