Изучая расширение Лапласа для графического класса, я увидел на странице Википедии код функции, которая находит определитель матрицы с использованием расширения Лапласа, написанного на Python (код также можно найти по ссылке, но для вашего удобства я также вставил его ниже):
Код: Выделить всё
def determinant(M):
# Base case of recursive function: 1x1 matrix
if len(M) == 1:
return M[0][0]
total = 0
for column, element in enumerate(M[0]):
# Exclude first row and current column.
K = [x[:column] + x[column + 1 :] for x in M[1:]]
s = 1 if column % 2 == 0 else -1
total += s * element * determinant(K)
return total
Признаюсь, у меня нет большого опыта работы с Python, поскольку Java и C# занимают львиную долю моего времени, но я старался понять это, чтобы лучше узнать Python. В коде много синтаксиса (в основном внутри цикла for над оператором return), которого я никогда раньше не видел. В частности, я никогда не видел enumerate(M[0]), использования двоеточий в строке, которая присваивает значения k (хотя строка в целом меня несколько смущает), и того, как они смогли упаковать весь этот оператор if/else в строку, которая присваивает значения s.