본문 바로가기

파이썬/자료구조

[Python] Set() 함수 정의, 예시, 집합 연산, 다양한 사용법

 

1. Set과 리스트, 튜플과의 비교

List와 tuple은 연속적으로 데이터를 저장하는 표준 파이썬 데이터 타입이다.

Set도 마찬가지로 데이터를 저장하는 표준 파이썬 데이터 타입이다.

 

가장 큰 다른 점은 Set은 원소의 중복을 허용하지 않으며, 정렬되지 않은 값을 저장한다.

Set은 불변 데이터만을 포함한다. (integer, float, string, tuple)

불변 데이터를 저장하고, 중복을 제거하고 싶을 때  Set이 유용할 수 있다.

Set은 또한 교집합, 배집합 등 다양한 함수를 제공한다.

 

 

2. Set 생성방법

결과를 보면 Python, R, SQL, Git 순으로 결과가 출력되어야 하나 

순서가 바뀌어서 출력된다. 이게 바로 Set이 정렬되지 않는 것을 말한다.

emptySet = set() #아무것도 없는 set 초기화
s= set((1,2,3)) #tuple로부터 초기화
a = set('ABC') #string로부터 초기화
x = {1,2,3} #중괄호를 이용한 초기화 (단 비어있을경우 dicitionary로 초기화된다.)
progLanguage = set(['Python', 'R', 'SQL', 'Git']) #List로부터 초기화
progLanguage

Output:

{'Git', 'Python', 'R', 'SQL'}

 

 

3. Set에서 add, remove, update, clear 함수

 

3-1 add 함수

language ={'python', 'java', 'c'}
language.add('c++') #add 함수
language

Output:

{'c', 'c++', 'java', 'python'}

 

 

 

3-2 remove 함수

비슷한 기능을 하는 함수로는 discard, pop이 있다.

language ={'python', 'java', 'c'}
language.remove('c') #remove 함수
language

Output:

{'java', 'python'}

 

 

3-3 update 함수

language ={'python', 'java', 'c'}
word = {'learn', 'study', 'obtain'}
language.update(word)
language

Output:

{'c', 'java', 'learn', 'obtain', 'python', 'study'}

 

 

3-4 clear 함수

language ={'python', 'java', 'c'}
language.clear()
language

Output:

set()

 

 

4 Set 집합연산 (합집합, 교집합,  차집합, 대칭차집합)

 

4-1 Union 함수 (합집합)

쉽게 말하면 A,B가 있을 때 A+B이다.

book = set(['Science', 'Python', 'Math', 'English', 'R'])
progLanguage = set(['Python', 'Java', 'SQL', 'Spark', 'R'])

book.union(progLanguage) #합집합

Output:

{'English', 'Java', 'Math', 'Python', 'R', 'SQL', 'Science', 'Spark'}

 

 

4-2 Intersection 함수 (교집합)

쉽게 말하면 A,B가 있을 때 A, B의 공통되는 부분이다. (교차되는 부분)

isdisjoint 함수로도 비슷한 결과를 얻을 수 있다. 단 return 값은 False, True이다.

book = set(['Science', 'Python', 'Math', 'English', 'R'])
progLanguage = set(['Python', 'Java', 'SQL', 'Spark', 'R'])

book.intersection(progLanguage) #교집합

Output:

{'Python', 'R'}
 
 
 
 
 

4-3 Difference 함수 (차집합)

쉽게 말하면 A,B가 있을 때 A에서 B와 공통되는 부분을 뺀 부분이다.

book = set(['Science', 'Python', 'Math', 'English', 'R'])
progLanguage = set(['Python', 'Java', 'SQL', 'Spark', 'R'])

book.difference(progLanguage) #book의 차집합
book - progLanguage #위와 같은 기능

Output:

{'English', 'Math', 'Science'}

 

 

 

4-4 Symmetric Diffrence (대칭 차집합)

쉽게 말하면 A,B가 있을 때 A+B이지만 A, B의 공통된 부분을 뺀 부분이다.

book = set(['Science', 'Python', 'Math', 'English', 'R'])
progLanguage = set(['Python', 'Java', 'SQL', 'Spark', 'R'])

book.symmetric_difference(progLanguage) #대칭차집합
book ^ progLanguage #위와 같은 기능

Output:

{'English', 'Java', 'Math', 'SQL', 'Science', 'Spark'}

 

 

 

 

 

Reference

Python Sets Tutorial: Set Operations & Sets vs Lists | DataCamp

Python | set() method - GeeksforGeeks