본문 바로가기
파이썬

파이썬 복사 된 변수가 원본을 변경합니까?

by º기록 2020. 9. 26.
반응형

파이썬에 아주 이상한 간단한 문제가 있습니다.

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)

...

아래에서 볼 수 있듯이 aux solucoes () 함수에 의해 변경되는 항목 임에도 불구하고 matriz 행렬이 변경됩니다.

이전 매트릭스 :
[[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 의 복사본을 만들지 않고 aux 라는 이름의 matriz 에 대한 새 참조를 만듭니다. 당신은 아마 원합니다

aux=matriz[:]


aux = copy.deepcopy(matriz)

제쳐두고, 각 문 뒤에 세미콜론이 필요하지 않으며, 파이썬은 그들을 EOL 마커로 사용하지 않습니다.

 

참조 페이지 https://stackoverflow.com/questions/8122627

 

 

반응형

댓글