Скопированная переменная меняет оригинал?

У меня простая проблема в Python, которая очень странная.

def estExt(matriz,erro): # (1) Determinar o vector X das soluções print ("Matrix after:"); print(matriz); aux=matriz; x=solucoes(aux); # IF aux is a copy of matrix, why the matrix is changed?? print ("Matrix before: "); print(matriz) ... 

Как вы видите ниже, матричный matriz изменяется, несмотря на то, что aux – это тот, который изменяется функцией solucoes() .

Матрица до:
[[7, 8, 9, 24], [8, 9, 10, 27], [9, 10, 8, 27]]

Матрица после:
[[7, 8, 9, 24], [0.0, -0.14285714285714235, -0.2857142857142847, -0.42857142857142705], [0.0, 0.0, -3.0, -3.0000000000000018]]

Линия

 aux=matriz; 

Не делает копию matriz , она просто создает новую ссылку на matriz именем aux . Вы, вероятно, хотите

 aux=matriz[:] 

Который сделает копию, предполагая, что matriz – это простая структура данных. Если это сложнее, вам, вероятно, следует использовать copy.deepcopy

 aux = copy.deepcopy(matriz) 

В стороне, вам не нужны полуколоны после каждого утверждения, python не использует их как маркеры EOL.

Использовать модуль копирования

 aux = copy.deepcopy(matriz) # there is copy.copy too for shallow copying 

Незначительный: точки с запятой не нужны.

aux не является копией matrix , это просто другое имя, которое относится к одному и тому же объекту.

Используйте модуль копирования для создания фактических копий ваших объектов.