Понимание кода расширения Лапласа в ВикипедииPython

Программы на Python
Ответить
Anonymous
 Понимание кода расширения Лапласа в Википедии

Сообщение Anonymous »

Изучая расширение Лапласа для графического класса, я увидел на странице Википедии код функции, которая находит определитель матрицы с использованием расширения Лапласа, написанного на 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.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»