ckdgh518   2년 전

파이썬에서 리스트를 정렬(sort, reverse) 할 때

왜 다른 변수까지 영향을 미치는건가요??

이게 무슨뜻이냐 하면..


n = [2, 3, 1, 4]

a,b = n,n

라고 했을 때


n.sort() 혹은

n.reverse()를 하게 되면

a,b 변수에도 같이 영향을 끼쳐 값이 모두 바뀌게 되네요...

왜 이렇게 되는건지와 해결 방법 아시는 분 없나요?ㅠㅠ

jh05013   2년 전

n이 리스트일 때 a = n을 하면 n을 복사하는 게 아니라, n이 가리키는 리스트를 a가 같이 가리키게 됩니다. 그 리스트를 sort나 reverse 등으로 수정하면 a와 n이 같이 바뀝니다.

정수로 이루어진 리스트를 복사하려면 a = n[:]을 사용하면 됩니다.

ckdgh518   2년 전

a=n이

a 안에 n의 리스트 값을 넣는게 아니라

포인터처럼 n의 리스트 값이 들어있는 주소값을 저장하게 되는거였군요...

그렇다면 정수가 아닌 문자열이나 실수의 형태도 a=n[:]과 같이 사용 가능한가요?

jh05013   2년 전

사실 무엇이 들어 있어도 복사할 수 있습니다. 다만 그 안의 원소들은 똑같아서, 리스트 안에 리스트가 있는 경우처럼 원소 자체를 수정하면 같이 바뀌게 됩니다.

댓글을 작성하려면 로그인해야 합니다.