반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

멋진 개발자가 되고 싶다

[파이썬 개념] 다중 할당(Multiple Assignment) 본문

Algorithm Study

[파이썬 개념] 다중 할당(Multiple Assignment)

오패산개구리 2021. 6. 30. 23:35
728x90
반응형

우선 이 예를 보자. 

a = [ 1 , 2 , 3]

b = a

 

1
2
3
4
5
6
7
>>> a = [1,2,3]
>>> b = a
>>> b[0] = 10
>>> b
[10, 2, 3]
>>> a
[10, 2, 3]
cs

 

a를 b에 할당할 경우

b를 통해 리스트의 요소를 변경하면

a의 리스트 또한 변경이 되는 것을 알 수 있다.

 

하지만 이것은 그저 [ 1 , 2 , 3 ]이란 데이터를 a가 가리키고 있을 뿐이고

b는 a와 같은 것을 가리키게 되어서 리스트의 값을 변경했을 때

저런 결과가 나타나는 것이다.

 

 

 

 

이제 본론으로 들어가 보자.

 

 

 

연결 리스트 rev와 slow가 있다고 하자.

rev = 1, slow = 2->3이라 가정해보면

 

rev, rev.next, slow = slow, rev, slow.next

 

이 코드의 경우

rev = 2->3, rev.next = 1, slow = 3이 되고 rev.next = 1이므로

최종적으로 rev = 2->1, slow = 3이 된다.

 

 

rev, rev.next = slow, rev

slow = slow.next

 

이 코드의 경우

rev = 2->3, rev.next = 1이 되어 rev = 2->1이 되는데

여기서 중요한 점은 rev = slow라는 점이다.

즉, 동일한 참조가 되었으며 rev = 2->1이 되었기 때문에 slow = 2->1로 함께 바뀌어 버린다.

 

 

 

 

이렇듯 파이썬이 강력한 기능을 제공하지만 우리가 이러한 특성을 잘 파악하지 못한다면

분명 코드를 잘 짠 것 같은데 동작은 엉성하게 하는 결과를 초래할 것이다.

 

 

 

 

 

 

 

 

출처: 파이썬 알고리즘 인터뷰(박상길 지음 정진호 일러스트) 출판사 [책만]

728x90
반응형

'Algorithm Study' 카테고리의 다른 글

[Python] 아스테리스크(Asterisk / *)  (0) 2021.07.18
[Python] zip() 함수  (0) 2021.07.18
빅오(big-O), 분할 상한 분석  (0) 2021.06.24