자, 그런데 위에서 살펴본 set("Hello")의 결과가 좀 이상하지 않은가? 분명"Hello"라는문자열로 set 자료형을 만들었는데 생성된 자료형에는 l 문자가 하나 빠져 있고 순서도 뒤죽박죽이다. 그 이유는 set에는 다음과 같은 2가지 큰 특징이 있기 때문이다.
(※ 중복을 허용하지 않는 set의 특징은 자료형의 중복을 제거하기 위한 필터 역할로 종종 사용되기도 한다.)
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
교집합 &
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1 & s2)
set([4, 5, 6])
*또는 다음과 같이 intersection함수를 사용해도 동일한 결과를 리턴한다.
s1.intersection(s2)
s2.intersection(s1)을 사용해도 결과는 같다.
합집합 |
print(s1 | s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
*또는 union함수를 이용하면 된다. 교집합에서 사용했던 intersection 함수와 마찬가지로
s2.union(s1)을 사용해도 동일한 결과를 리턴한다.
차집합 -
print(s2 - s1
set([8, 9, 7])
print(s1 - s2)
set([1, 2, 3])
*s1.difference(s2) {1, 2, 3} s2.difference(s1) {8, 9, 7}
값 1개 추가하기(add)
이미 만들어진 set 자료형에 값을 추가할 수 있다. 1개의 값만 추가(add)할 경우에는 아래와 같이 한다.
s1 = set([1, 2, 3])
s1.add(4)
print(s1)
{1, 2, 3, 4}
값 여러 개 추가하기(update)
여러 개의 값을 한꺼번에 추가(update)할 때는 다음과 같이 하면 된다.
s1 = set([1, 2, 3])
s1.update([4, 5, 6])
print(s1)
{1, 2, 3, 4, 5, 6}
특정 값 제거하기(remove)
특정 값을 제거하고 싶을 때는 아래와 같이 하면 된다.
s1 = set([1, 2, 3])
s1.remove(2)
print(s1)
{1, 3}