Whiteship's Note

리스트 복사

Python/Study : 2007. 2. 2. 21:48


>>> a = 3
>>> b = 3
>>> a = 1
>>> a
1
>>> b
3
3이라는 객체를 a, b 두 개의 변수가 가리키고 있다가 a가 다른 객체 1을 가리키게 됩니다. 그러나 배열은 이런 방법과는 다르게 동작합니다.

1. 일단 배열은 []를 사용할 때 마다 매번 객체를 생성합니다.
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False

2. 다음과 같은 방법으로 같은 배열을 가리키도록 할 수 있습니다.
>>> b = a
>>> a is b
True

하지만 이 때 만약에 a변수를 통해서 배열의 값을 바꾸게 되면 b도 역시 같은 배열 객체를 참조하기 때문에 값이 바뀐 배열을 참조하게 됩니다.
>>> a[0] = 100
>>> b
[100, 2, 3]

단순히 1번과 같은 효과를 가지면서 배열에 있는 모든 값들을 동일하게 가지는 다른 배열을 만드는 방법은 두 가지가 있습니다.

1. [:] 이것을 사용하는 방법과
>>> c = a[:]
>>> a is c
False
>>> c
[100, 2, 3]

2. copy 모듈을 사용하는 방법이 있습니다.
>>> from copy import copy
>>> d = copy(A)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'A' is not defined
>>> d = copy(a)
>>> d
[100, 2, 3]
>>> d is a
False

모듈이라는 것이 나왔는데.... 뭔지 모르겠군요. from copy import copy... copy로 부터 copy를 불러 들인것인가.. 흠.. from 패키지 import 클래스 인가.. 아니면 from 클래스 import 메소드 인가..;;

'Python > Study' 카테고리의 다른 글

클래스  (0) 2007.02.04
함수  (0) 2007.02.03
for문  (0) 2007.02.03
while문  (0) 2007.02.03
if문  (0) 2007.02.03
리스트 복사  (0) 2007.02.02
빈 공간에 예민함  (0) 2007.02.02
변수  (0) 2007.02.02
True, False  (2) 2007.02.02
Dictionary(Map)  (0) 2007.02.02
Python 스터디 Index  (0) 2007.02.02
top

Write a comment.




: 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10 : ··· : 18 :