본문 바로가기

프로그래밍 언어/Python

[Python 자료형] 집합 (Set)


[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([123])
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([1234])
set([12345678910])
set([123456789])
cs

집합은 순서가 없어 인덱스를 이용해서 값을 참조할 수 없다. 리스트나 튜플로 변환해야 인덱스를 이용한 참조를 할 수 있다.

1
2
3
4
5
6
# 집합 선언
set1 = set([1,2,3])
list1 = list(set1)
 
print list1
print list1[1]

cs


1
2
[1, 2, 3]
2
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([123456])
set([123456])
 
set([13])
set([13])
set([456])
 
set([13456])
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([123])
[123]
cs

순서가 없기 때문에 인덱싱을 이용한 데이터 참조를 하고 싶다면 리스트나 튜플로 변환 후 사용해야 한다.