슬코생
[Python] In-Place & Out-Place Operators 본문
실습은 구글 코랩에서 진행했다 :)
블로그 복습 정리는 그날 새롭게 안 내용, 그동안 헷갈렸던 내용들 위주로 정리하려고 한다.
1. In-Place Operators
a = 5
a += 1
a # a의 경우, 현재 int형으로 원시자료형이다. 즉, 불변타입! 따라서, 불변형의 경우 수정이 필요할 때 새로운 객체를 생성한다.
- 기존 객체를 수정 시도하고, 불가능할 시 새로운 객체 생성 (계산 전, 이전 값이 별도로 필요하지 않다면 이를 사용함
- 장점 : 추가 메모리 할당 없이 기존 할당된 메모리를 그대로 사용하므로 메모리 효율화와 속도 향상 기대가 가능해진다.
(특히, 배열의 크기가 클수록 할당에 시간이 오래 소요되므로 더 큰 차이가 발생한다.)
- 예시 : +=, -=, *=, /=
2. Out-Place Operators
a = 5
a = a+1
a # 새로운 객체 생성
- 명시적으로 새로운 객체 생성
3. 예시
a = 10 # int는 불변 타입
b = a # a와 b는 같은 메모리 주소를 가르침
a += 1 # a는 불변 타입 -> 수정이 필요할 경우에 새로운 객체 생성해서 할당
a,b, a is b # a가 새로 할당되었기 떄문에 a is not b!
(11, 10, False)
a = [1,2,3] # List는 가변 타입
b = a # a, b는 같은 메모리 주소를 가르침
a += [4] # a는 가변 타입 -> 원 객체를 수정 (in-place)
a, b, a is b # a의 메모리 주소는 변함 없음!
([1,2,3,4], [1,2,3,4], True)
a = a + [5] # out-place 연산
a, b, a is b
([1,2,3,4,5], [1,2,3,4], False)
'Data > 기초' 카테고리의 다른 글
[Python] key-value 가져오기 (0) | 2022.05.19 |
---|---|
[Python] Time Complexity of List (Big-O) (0) | 2022.05.18 |
[Goorm] AI기술 자연어 처리 전문가 양성 과정 4기 (0) | 2022.05.18 |
Comments