티스토리 뷰

이번 포스팅에서는 파이썬 집합에 대해서 알아보겠습니다. 

이전 포스팅

파이썬(Python) 집합 알아보기


수학의 집합을 파이썬에서는 어떻게 처리하는지를 알아봅시다. 빈 집합(공집합)을 만들기 위해 set 클래스로 객체를 만듭니다. 이렇게 만든 객체를 변수 s에 할당합니다. ‘s’라고 변수이름을 입력하면 set()으로 공집합을 표시합니다. Set()는 수학의 공집합 표시(Ф)와 차이가 있습니다. 


왜냐하면 딕셔너리에서 원소가 없는 것을 { }로 사용하기 때문입니다. 리터럴 표기법으로 집합 객체를 만들 때 중복된 원소를 넣을 수도 있습니다. 객체가 만들어지면 중복된 원소가 다 사라집니다. 이 때 집합의 원소는 중복을 허용하지 않아서 중복되지 않은 유일한 값만 갖습니다.


집합 연산해보기

집합에서도 다른 내장 클래스처럼 리터럴 표기법을 제공합니다. 여기에서는 중괄호를 사용하지만 키만 표시합니다. 두 개의 집합을 만들고 변수 s1, s2에 할당합니다.


교집합은 두 집합에 동시에 들어있는 원소를 구합니다. 연산자 & 또는 intersection 메소드를 사용하면 됩니다. 위에서 만든 두 집합에는 공통된 원소가 없습니다. 교집합은 공집합(set())이 되겠죠?


두 집합의 합집합은 연산자 | 또는 union 메소드를 사용해서 구할 수 있습니다. 두 개의 집합에 있는 모든 원소를 합쳐서 집합을 만드는데 공통된 원소가 있으면 하나만 사용합니다. 집합은 유일한 값만 갖는다는 것을 기억하세요.


차집합은 연산자 – 또는 difference 메소드를 사용합니다. 첫 번째 집합에서 두 집합의 공통 원소(교집합)를 뺍니다. 공통된 원소가 없어서 첫 번째 집합의 원소가 전부 표시됩니다.


대칭차집합은 연산자 ^ 또는 symmetric_difference 메소드를 사용해서 구합니다. 두 집합에 합집합에서 교집합을 빼면 됩니다. 대칭차집합은 합집합과 교집합의 차집합입니다. 교집합이 공집합이므로, 합집합과 같게 됩니다.


집합에서 포함관계 등을 알아보기

집합에 특정한 원소가 있는지 알아볼 때는 키워드 in을 사용합니다. 리터럴 표기법으로 새로운 집합을 만들어서 변수 s3에 할당합니다. 1이라는 원소가 s3 집합에 들어있는지 확인해볼까요? ‘원소 in 집합’으로 문장을 쓰면 됩니다. 원소가 들어있으면 참(True), 없으면 거짓(False)이 됩니다.


이제 집합 객체 간의 포함관계를 확인해봅시다. 연산자는 부등호를 쓰고 issubset 또는 issuperset 메소드를 사용하면 됩니다. A 집합이 B 집합에 포함되면 A는 B의 부분집합이라고 합니다. A의 모든 원소가 B에 들어있는 것이죠.


s4라는 집합 객체를 하나 더 만듭니다. {3, 4, 5}는 {1, 2, 3, 4, 5}에 포함됩니다. 이것을 s4 < s3으로 표현합니다. 또는 s4.issubset(s3)라고 해도 됩니다. s4가 s3에 포함된 집합(subset)인지 묻는 것이죠.


s4 집합은 s3 집합에 포함됩니다. s4.issuperset(s3)는 s4 집합이 s3 집합을 포함하는지 묻습니다. s4 집합은 s3를 포함하지 않습니다. 거짓이 되겠죠?


하지만 위에 있는 것을 반대로 표현하면 참이 됩니다.


어떤 집합은 자신을 포함합니다. 자기 자신도 부분집합인 것이죠.


댓글
댓글쓰기 폼