파이썬에서 리스트를 정렬(sort, reverse) 할 때
왜 다른 변수까지 영향을 미치는건가요??
이게 무슨뜻이냐 하면..
n = [2, 3, 1, 4]
a,b = n,n
라고 했을 때
n.sort() 혹은
n.reverse()를 하게 되면
a,b 변수에도 같이 영향을 끼쳐 값이 모두 바뀌게 되네요...
왜 이렇게 되는건지와 해결 방법 아시는 분 없나요?ㅠㅠ
n이 리스트일 때 a = n을 하면 n을 복사하는 게 아니라, n이 가리키는 리스트를 a가 같이 가리키게 됩니다. 그 리스트를 sort나 reverse 등으로 수정하면 a와 n이 같이 바뀝니다.
정수로 이루어진 리스트를 복사하려면 a = n[:]을 사용하면 됩니다.
a=n이
a 안에 n의 리스트 값을 넣는게 아니라
포인터처럼 n의 리스트 값이 들어있는 주소값을 저장하게 되는거였군요...
그렇다면 정수가 아닌 문자열이나 실수의 형태도 a=n[:]과 같이 사용 가능한가요?
사실 무엇이 들어 있어도 복사할 수 있습니다. 다만 그 안의 원소들은 똑같아서, 리스트 안에 리스트가 있는 경우처럼 원소 자체를 수정하면 같이 바뀌게 됩니다.
댓글을 작성하려면 로그인해야 합니다.
ckdgh518 4년 전
파이썬에서 리스트를 정렬(sort, reverse) 할 때
왜 다른 변수까지 영향을 미치는건가요??
이게 무슨뜻이냐 하면..
n = [2, 3, 1, 4]
a,b = n,n
라고 했을 때
n.sort() 혹은
n.reverse()를 하게 되면
a,b 변수에도 같이 영향을 끼쳐 값이 모두 바뀌게 되네요...
왜 이렇게 되는건지와 해결 방법 아시는 분 없나요?ㅠㅠ