[Python 자료형] 집합 (Set)
집합 자료형
집합 자료형은 파이썬 2.3부터 지원된 자료형이다. 순서가 없고 중복을 허용하지 않는다는 특징을 가진다. 중복을 허용하지 않는다는 특징은 프로그래밍에서 매우 유용하게 사용된다.
1 2 3 4 5 6 | # 집합 선언 set1 = set([1,2,3]) set2 = set("Conor Mcgregor") print set1 print set2 | cs |
1 2 | set([1, 2, 3]) set([' ', 'C', 'e', 'g', 'M', 'c', 'o', 'n', 'r']) | cs |
이와 같이 순서가 없고, 중복을 허용하지 않는다.
집합에 데이터를 추가 삭제하는 방법은 아래와 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # 집합 선언 set1 = set([1,2,3]) # 값 하나 추가 : add(x) set1.add(4) print set1 # 값 여러개 추가 : update(x) set1.update([5,6,7,8,9,10]) print set1 # 값 제거 : remove(x) set1.remove(10) print set1 # 집합 set1 제거 del set1 | cs |
1 2 3 | set([1, 2, 3, 4]) set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) set([1, 2, 3, 4, 5, 6, 7, 8, 9]) | cs |
집합은 순서가 없어 인덱스를 이용해서 값을 참조할 수 없다. 리스트나 튜플로 변환해야 인덱스를 이용한 참조를 할 수 있다.
집합 연산 (교집합, 합집합, 차집합)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # 집합 선언 set1 = set([1,2,3]) set2 = set([2,4,5,6]) set3 = set() # 공집합 # set1과 set2의 교집합 print set1 & set2 print set1.intersection(set2) # set1과 set2의 합집합 print set1 | set2 print set1.union(set2) # set1과 set2의 차집합 print set1 - set2 print set1.difference(set2) print set2.difference(set1) # set1과 set2의 합집합에서 교집합을 뺀 차집합 print set1 ^ set2 | cs |
1 2 3 4 5 6 7 8 9 10 11 | set([2]) set([2]) set([1, 2, 3, 4, 5, 6]) set([1, 2, 3, 4, 5, 6]) set([1, 3]) set([1, 3]) set([4, 5, 6]) set([1, 3, 4, 5, 6]) | cs |
정리
집합은 순서가 없고 중복을 허용하지 않는다.
중복을 허용하지 않는다는 특징을 이용해서 리스트나 튜플의 중복을 제거할 수 있다.
1 2 3 4 5 6 7 8 | # 집합 선언 list1 = [1,2,3,2,3] set1 = set(list1) print set1 list2 = list(set1) print list2 | cs |
1 2 | set([1, 2, 3]) [1, 2, 3] | cs |
순서가 없기 때문에 인덱싱을 이용한 데이터 참조를 하고 싶다면 리스트나 튜플로 변환 후 사용해야 한다.
'아카이브 > Python' 카테고리의 다른 글
[Python 제어문] 반복문 while (0) | 2015.07.16 |
---|---|
[Python 제어문] 조건문 if elif else (0) | 2015.07.15 |
[Python 자료형] 딕셔너리 (Dictionary) (1) | 2015.07.15 |
[Python 자료형] 튜플 (Tuple) (0) | 2015.07.15 |
[Python 자료형] 리스트 (List) (0) | 2015.07.15 |