[python] 집합(set)
🚀 집합(Set)의 정의
- {} 괄호 안에 키를 콤마(,)로 구분하여 나열
- 사전을 정의하는 괄호와 같지만, 값은 없고 키만 있음
- 값을 포함하고 있는지 여부만 중요할 뿐이어서 키의 중복을 허락하지 않고, 순서도 별 의미 없음
- 집합(set) 생성시 요소가 2개여도 결과적으로는 하나만 저장됨
asia = {'korea', 'china', 'japan', 'korea'}
print(asia)
>>> {'korea', 'japan', 'china'}
🚀 집합(set) 변환
print('string - ', set('sanghyung'))
print('list - ', set([12, 34, 56, 78]))
print('tuple - ', set(("Emily", "Jack", "Smith")))
print('dictionary - ', set({'boy':'소년', 'school':'학교','book':'책'}))
print('empty set - ', set())
string - {'h', 'u', 'n', 'y', 's', 'a', 'g'}
list - {56, 34, 12, 78}
tuple - {'Emily', 'Jack', 'Smith'}
dictionary - {'school', 'book', 'boy'}
empty set - set()
- 집합의 경우, 다른 자료형과는 다르게 공집합 생성시 set() 만 가능
- 집합은 사전을 만들 때 쓰는 괄호와 같아서 {}의 경우, 빈 사전을 의미
🚀 요소 추가 및 삭제
집합은 수정 가능한 자료형이기 때문에 언제든지 키를 넣고 뺄 수 있음
- 집합에 원소를 추가할 때는 add 메서드를 사용
- 집합에서 원소를 제거할 때는 remove 메서드를 사용
- update 메서드는 집합끼리 결합하여 합집합 생성
asia = {'korea', 'china', 'japan'}
asia.add('vietnam') # 추가
asia.add('china') # 추가 안됨
asia.remove('japan') # 제거
print(asia)
asia.update({'singapore', 'hongkong', 'korea'})
print(asia)
{'vietnam', 'korea', 'china'}
{'vietnam', 'china', 'singapore', 'hongkong', 'korea'}
🚀 집합의 연산
연산 | 기호 | 메서드 | 설명 |
---|---|---|---|
합집합 | | | union | 두 집합의 모든 원소 |
교집합 | \& | intersection | 두 집합 모두에 있는 원소 |
차집합 | - | difference | 왼쪽 집합의 원소 중 오른쪽 집합의 원소를 뺀 것 |
배타적 차집합 | \^ | symmetric_difference | 한쪽 집합에만 있는 원소의 합 |
twox = {2, 4, 6, 8, 10, 12}
threex = {3, 6, 9, 12, 15}
print("교집합", twox & threex)
print("합집합", twox | threex)
print("차집합", twox - threex)
print("차집합", threex - twox)
print("배타적 차집합", twox ^ threex)
교집합 {12, 6}
합집합 {2, 3, 4, 6, 8, 9, 10, 12, 15}
차집합 {8, 2, 10, 4}
차집합 {9, 3, 15}
배타적 차집합 {2, 3, 4, 8, 9, 10, 15}
💡 부분 집합 여부 조사
연산 | 기호 | 메서드 | 설명 |
---|---|---|---|
부분집합 | <= | issubset | 왼쪽이 오른쪽의 부분집합인지 조사 |
진성 부분집합 | < | 부분집합이면서 여분의 원소가 더 있음 | |
포함집합 | >= | issuperset | 왼쪽이 오른쪽 집합을 포함하는지 조사 |
진성 포함집합 | > | 포함집합이면서 여분의 원소가 더 있음 |
특정 원소가 집합에 포함되어 있는지는 in 연산자로 조사 (포함 여부만 조사할 떄는 in, not in 구문이 가장 간편!)
mammal = {'코끼리', '고릴라', '사자', '고래', '사람', '원숭이', '개'}
primate = {'사람', '원숭이', '고릴라'}
if '사자' in mammal:
print('사자는 포유류이다.')
else:
print('사자는 포유류가 아니다.')
print(primate <= mammal)
print(primate < mammal)
print(primate >= mammal)
print(primate > mammal)
사자는 포유류이다.
True
True
False
False
Leave a comment