파이썬/자료구조
[Python] Set() 함수 정의, 예시, 집합 연산, 다양한 사용법
메가구글
2023. 5. 4. 17:26
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