티스토리 뷰
참조: https://wikidocs.net/18
변수란?
a --> 3
리스트를 변수에 넣고 복사하고자 할 때
여기서는 리스트 자료형에서 가장 혼동하기 쉬운 "복사"에 대해 설명하려고 한다. 다음 예를 통해 알아보자.
>>> a = [1,2,3]
>>> b = a
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 4, 3]
앞의 예를 유심히 살펴보면 b라는 변수에 a가 가리키는 리스트를 대입하였다. 그런 다음 a 리스트의 a[1]을 4라는 값으로 바꾸면 a 리스트만 바뀌는 것이 아니라 b 리스트도 똑같이 바뀐다. 그 이유는 a, b 모두 같은 리스트인 [1, 2, 3]을 가리키고 있었기 때문이다. a, b는 이름만 다를 뿐이지 완전히 동일한 리스트를 가리키고 있는 변수이다.
그렇다면 b 변수를 생성할 때 a와 같은 값을 가지도록 복사해 넣으면서 a가 가리키는 리스트와는 다른 리스트를 가리키게 하는 방법은 없을까? 다음의 2가지 방법이 있다.
1. [:] 이용
첫 번째 방법으로는 아래와 같이 리스트 전체를 가리키는 [:]을 이용해서 복사하는 것이다.
>>> a = [1, 2, 3]
>>> b = a[:]
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
위의 예에서 볼 수 있듯이 a 리스트 값을 바꾸더라도 b 리스트에는 영향을 끼치지 않는다.
2. copy 모듈 이용
두 번째는 copy 모듈을 이용하는 방법이다. 아래 예를 보면 from copy import copy라는 처음 보는 형태가 나오는데, 이것은 뒤에 설명할 파이썬 모듈 부분에서 자세히 다룬다. 여기서는 단순히 copy라는 함수를 쓰기 위해서 사용되는 것이라고만 알아두자.
>>> from copy import copy
>>> b = copy(a)
위의 예에서 b = copy(a)는 b = a[:]과 동일하다.
두 변수가 같은 값을 가지면서 다른 객체를 제대로 생성했는지 확인하려면 다음과 같이 is 함수를 이용하면 된다. 이 함수는 서로 동일한 객체인지 아닌지에 대한 판단을 하여 참과 거짓을 리턴한다.
>>> b is a
False
위의 예에서 b is a 가 False를 리턴하므로 b와 a가 서로 다른 객체임을 알 수 있다.
'BackEnd > Python' 카테고리의 다른 글
[퍼옴] [점프투파이썬] raise 강제 에러를 통해 java interface 구현 (0) | 2017.09.14 |
---|---|
[퍼옴] [점프투파이썬] 패키지 (0) | 2017.09.14 |
[퍼옴] [점프투파이썬] 환경변수 및 sys를 이용한 모듈 import (0) | 2017.09.14 |
[퍼옴] [점프투파이썬] python을 shell 같이 사용해보자. (0) | 2017.09.14 |
[퍼옴] [점프투파이썬] 고급 문자열 포멧팅 (0) | 2017.09.14 |
- javascript
- BigData
- API
- 머신러닝
- 파이썬
- Gradle
- executor
- 점프투파이썬
- TDD
- AI
- Docker
- Maven
- memory
- 텐서플로우
- serverless
- NIO
- Error
- Configuration
- web
- tensorflow
- spark
- spring
- mysql
- ML
- Java
- AWS
- 모두의딥러닝
- mybatis
- 중앙정보처리학원
- python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |