본문 바로가기
Programming/Python

[Python] 파이썬 Set / 집합 자료형 / 집합연산 / 집합계산 알아보기!

by EunjiBest 2022. 5. 8.

[Python] 파이썬 Set / 집합 자료형 / 집합연산 / 집합계산 알아보기!

 

 

집합

 

집합이라 하면,

고등학교 1학년 딱 들어가면 수학책 첫 단원 이름!

이였던 것같다. (나는 그 세대다..) 수학 A,B형세대ㅋㅋㅋ

 

아무튼 그 기억을 떠올려서 간단한 이론을 배워보자.

 

1. 교집합

 

 

 

2. 합집합

 

 

 

3. 차집합

 

 

왼쪽 그림 : 집합 A에 대한 집합 B의 차집합이다. 즉 A-B

오른쪽 그림 : 집합 B에 대한 집합 A의 차집합이다. 즉 B-A

 

 

4. XOR

XOR은 bitwise exclusive or 이라는 뜻으로, 

A-B + B-A를 합친 것이다.

 

 

 

 

 

집합의 특징 2가지.

1. 중복을 허용하지 않는다. -> 리스트의 중복 제거를 위한 필터 역할

2. 순서가 없다. -> 순서가 없기 때문에 인덱싱 불가

 

 

위 특성에 따라 다음 코드의 값은 모두 같다.

 

>>> set1 = {1,2,3,4}
{1, 2, 3, 4}

>>> set2 = set([1,2,3,4])
{1, 2, 3, 4}

>>> set3 = {3,1,2,4}
{1, 2, 3, 4}

>>> set4 = {1,1,2,3,4}
{1, 2, 3, 4}

 

 

 

 

 

파이썬에서 집합 만들기 - set()

 

이미 위 코드에 적혀있지만

집합은 {} 중괄호 안에 원소를 넣거나, 또는 set()에 문자열이나, 리스트를 넣어서 만들 수 있다.

 

>>> set1 = {1,2,3,4}
{1, 2, 3, 4}

>>> set2 = set("hello")
{'e', 'h', 'l', 'o'}

>>> set3 = set([1,2,3,4])
{1, 2, 3, 4}

 

 

 

집합 원소 추가 및 삭제 - add /update/remove/discard

 

>>> set1 = {1,2,3,4}

>>> set1.add(5)
{1, 2, 3, 4, 5}

>>> set1.update([6,5,9])
{1, 2, 3, 4, 5, 6, 9}

>>> set1.remove(5)
{1, 2, 3, 4, 6, 9}

>>> set1.discard(10)
{1, 2, 3, 4, 6, 9}

 

집합 set1을 만들었다.

 

add() -  특정 값 추가하는 함수

update() - 어러 개 값을 추가하는 함수. 리스트로 넣어주어야 한다.

remove() - 특정 값 삭제하는 함수(집합 안에 해당 원소가 없을 시 오류)

discard() - 특정 값 삭제하는 함수(집합 안에 값이 해당 원소가 없어도 출력)

 

여기서 주의해야 할 점은!

함수를 적용하면 set1의 원본값이 계속 바뀐다.

 

따라서, 따로 변수를 할당할 필요는 없지만,

계산에 혼동이 생길 수 있기 때문에 주의가 필요하다.!

 

 

 

집합 다루기

 

>>> new_set = {1,2,3,4}

>>> print(5 in new_set)
False
>>> print(4 in new_set)
True

 

in을 사용하여

집합 안에 있는 원소들을 검색할 수 있다.

결과는 False와 Ture로 반환된다.

 

 

>>> new_set = {1,2,3,2,4,4,4}
>>> print(len(new_set))
4

 

리스트나, 튜플, 딕셔너리와 마찬가지로

len()으로 원소의 개수도 셀 수 있다.

 

중복은 허용되지 않기 때문에 4가 출력되었다.

 

 

 

 

집합연산

 

>>> set1 = {1,2,3,4}
>>> set2 = {2,3,5,7}

>>> union = set1 | set2
{1, 2, 3, 4, 5, 7}
>>> intersection = set1 & set2
{2, 3}
>>> diff = set1 - set2
{1, 4}
>>> xor = set1 ^ set2
{1, 4, 5, 7}

 

아래와 같은 기호를 사용하면 된다.

 

1. 합집합 : | -> 윈도우의 경우 쉬프트 누르고 \, 맥은 쉬프트 역슬레쉬

2. 교집합 : &

3. 차집합 : - -> A-B인지, B-A인지에 따라 값이 다르게 나옴

4. XOR : ^

 

 

 

 

 

 


반응형

댓글