본문 바로가기

Programming/Python

집합 그리고 참조

집합은 정렬되지 않은 단순 객체의 묶음이다.

집합은 포함된 객체들의 순서나 중복에 상관없이 객체의 묶음 자체를 필요로 할 때 주로 사용한다.

집합끼리의 멤버쉽 테스트 ( in , not in 연산) 를 통해 한 집합이 다른 집합의 부분집합인지 확인할 수 있으며 , 
두 집합이 교집합 등 또한 알아낼 수 있다.





set을 통해 bri 라는 집합을 선언과 동시에 초기화 하고
멤버쉽 연산 in 을 통해 요소들이 집합에 포함되어 있는지 확인한다.


그 후 , bric 이라는 집합을 만드는데 그 객체들은 bri의 객체들을 copy() 해온다.
그리고 bric에는 'china' 라는 객체를 더한다.

issuperset은  확대집합을 의미한다.
당연히 bri 집합은 bric 집합 내에 포함되니 True 값을 반환

그리고 bri 집합에서 russia 객체를 삭제 후 &(AND)연산을 통해 bri 집합과 bric 집합의 교집합을 확인.





참조

객체를 생성하고 변수에 할당해 줄 때 , 사실 실제 객체가 변수에 할당되는 것은 아니다.
변수에는 객체의 참조가 할당된다.    참조란 , 그 변수의 이름이 우리의 컴퓨터 메모리 어딘가에 저장되어 있는 실제 객체의 위치를 가리키는 것을 의미한다.
이를 객체에 이름을 바인딩 한다고 표현한다.



print("Simple Assignment")
shoplist = ['apple','mango','carrot','banana']
# my list is just another name pointing to the same object #
mylist = shoplist
# I purchased the first item , so I remove it from the list
del shoplist[0]

print("Shoplist is",shoplist)
print("mylist is ",mylist)
#Notice that both shoplst and mylist both print
#the same list without the 'apple' confirming that
#they point to the same object
print('Copy by making a full slice')
#Make a copy by doing a full slice
mylist = shoplist[:]
#remove first item
del mylist[0]

print("Shoplits is",shoplist)
print("mylist is ",mylist)
#Notice that now two lists are different

실행 결과 :

Simple Assignment

Shoplist is ['mango', 'carrot', 'banana']

mylist is  ['mango', 'carrot', 'banana']

Copy by making a full slice

Shoplits is ['mango', 'carrot', 'banana']

mylist is  ['carrot', 'banana']

주석에 모든 설명을 달아두었다.

리스트와 같은 어떤 열거형이나 복잡한 객체 ( 정수형과 같은 단순 객체 제외)의 복사본을 생성하고 싶을때는
슬라이스 연산자를 이용하여 복사본을 생성해야 한다.

단순히 한 변수를 다른 변수에 할당하게 되면 두 변수는 같은 객체를 "참조"하게 되며 실제 복사본이 생성되지는 않는다.
이 점은 꼭 주의하자

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

객체 지향 프로그래밍 ( Object - Oriented Programming )  (0) 2017.11.12
문자열 보충설명  (0) 2017.11.11
열거형  (0) 2017.11.11
사전  (0) 2017.11.11
튜플  (0) 2017.11.11