기본 콘텐츠로 건너뛰기

라벨이 깊은복사인 게시물 표시

[matplotlib]quiver()함수

[python] 얕은 복사(shallow copy)와 깊은 복사(deep copy)

얕은 복사(shallow copy)와 깊은 복사(deep copy) 관련내용 리스트 객체의 복사 객체들의 참조나 요소의 같음과 다름은 두 값이 같음의 여부를 판정하는 연산자 == 와 키워드 is 로 확인할 수 있습니다. a=[1, 2, 3] b=a; b [1, 2, 3] a==b True 위 결과는 두 객체의 값이 같음을 의미합니다. 그러나 이 결과가 두 객체의 참조점의 위치를 같음을 의미하지는 않습니다. 즉, 위 결과는 다음의 결과를 보장하지 않습니다. id(a[1])==id(b[1]) True 위 두 코드와 같이 값과 참조점의 위치가 같음은 키워드 is 에 의해 확인할 수 있습니다. a is b True 위 코드의 객체 b는 a를 할당한 것으로 동일한 위치에 있는 요소들을 참조합니다. 다음 코드의 list() 는 리스트 자료형의 객체를 생성하는 내장함수입니다. 이 함수에 의해 생성된 객체는 같은 값을 포함하지만 다른 참조점을 가집니다. 즉, 다른 객체입니다. c=list(a); c [1, 2, 3] a==c True a is c False 위의 객체들 중에 b의 첫 번째 요소값을 변경시키면 같은 참조점을 가지는 a 역시 수정됩니다. 그러나 다른 객체인 c에는 영향을 주지 않습니다. b[0]=100; b [100, 2, 3] a [100, 2, 3] c [1, 2, 3] 결과적으로 위의 객체 b와 c는 a를 복사한 것입니다. 그러나 b와 c는 다른 객체입니다. 이와 같이 파이썬은 객체가 객체를 복사하는 2가지 방법을 가지고 있습니다(그림 1) 얕은 복사(shallow copy) 위 a와 b 객체의 관계 동일한 참조점에 있는 요소들을 포함 얕은 복사에 있는 객체는 서로 연결되어 있음 깊은 복사(deep copy) 위 a와 c 객체의 관계 동일한 요소들을 가지지만 각 요소의 참조점은 다릅니다. 다른 객체로서 서로 영향을 주지 않음 이 관계를 그림 1과 같이 나타낼 수 있습니다....

[python] 리스트(List)

리스트(List) 내용 리스트(List) 리스트는 가변객체(mutable) 리스트 객체의 복사 리스트의 대표적인 메소드 리스트(List) 리스트(list)의 특성은 다음과 같습니다. 리스트(list) 대괄호([ ]) 내에 자료들을 입력 입력된 자료가 없는 빈 리스트 객체 생성 가능 숫자형와 문자형을 혼합하여 가질 수 있음 요소로 다른 리스트를 가질수 있음 요소의 수정이 가능 즉, 가변(mutable) 객체 다음 코드로 생성된 리스트 객체 ls1, ls2, 그리고 ls3은 각각 수치형, 문자형, 그리고 두 자료형의 혼합으로 구성되어 있습니다. lst1=[2, 1, 5];lst1 [2, 1, 5] lst2=['a', 'python', 'kotlin'];lst2 ['a', 'python', 'kotlin'] lst3=[23, "computer", 98, "apple"];lst3 [23, 'computer', 98, 'apple'] 객체 ls4는 리스트내에 다른 리스트를 요소로 포함하고 있습니다. lst4=[1, ["car", "computer"], 2,["apple, pear"]];lst4 [1, ['car', 'computer'], 2, ['apple, pear']] 리스트는 가변객체(mutable) 리스트는 1개 이상의 요소를 가지며 각 요소에 순차적으로 인덱스가 자동으로 할당됩니다. 그러므로 문자열과 같이 리스트 역시 시퀀스 객체 이며 그 인덱스를 사용하여 특정한 요소에 접근할 수 있습니다. 또한 가변 객체인 리스트 의 각 요소는 그 인덱스 를 사용하여 수정, 치환, 삭제 할 수 있습니다. l...