2-6. set (집합)
페이지정보
내용
Set
Set은 중복이 없는 요소들로 구성된다. Set은 Curly Brace(중괄호) { }를 사용하여 표현한다.
내부적으로 순서를 저장하지 않기 때문에 순서를 이용하는 기능들은 사용할 수 없다.
리스트나 튜플을 set으로 변경하기 위해서는 set() 함수를 이용한다. 리스트나 튜플에 중복값이 있을 때, 중복되는 값들은 하나만 남는다. 따라서 중복없이 Unique한 결과를 얻을 때 set을 사용할 수 있다.
- 중복을 허용하지 않는다.
- 순서가 없다(Unordered)
1. 집합 생성
집합 자료형은 다음과 같이 set 키워드를 이용해 만들 수 있다.
소스
s1 = set([1,2,3]) print(s1) |
결과
{1, 2, 3} |
위와 같이 set()의 괄호 안에 리스트를 입력하여 만들거나 아래와 같이 문자열을 입력하여 만들 수도 있다.
소스
s2 = set("Hello") print(s2) |
결과
{'H', 'e', 'l', 'o'} |
2. 교집합, 합집합, 차집합 구하기
set 은 교집합, 합집합, 차집합을 구할 때 유용하게 사용할 수 있다.
다음과 같이 2개의 set 자료형을 만든다. s1은 1부터 6까지의 값을 가지고, s2는 4부터 9까지의 값을 가진다.
소스
s1 = set([1, 2, 3, 4, 5, 6]) s2 = set([4, 5, 6, 7, 8, 9]) |
1) 교집합
교집합은 "&" 기호를 이용하여 구할 수 있다.
소스
print(s1 & s2) |
결과
{4, 5, 6} |
또는 다음과 같이 intersection 함수를 사용해도 동일한 결과를 얻을 수 있다.
소스
print(s1.intersection(s2)) |
결과
{4, 5, 6} |
s2.intersection(s1)을 사용해도 결과는 같다.
2) 합집합
합집합은 "|" 기호를 이용하여 구할 수 있다. 이때 4, 5, 6처럼 중복해서 포함된 값은 한 개씩만 표현된다.
소스
print(s1 | s2) |
결과
{1, 2, 3, 4, 5, 6, 7, 8, 9} |
또는 union 함수를 이용하면 된다. 교집합에서 사용했던 intersection 함수와 마찬가지로 s2.union(s1)을 사용해도 동일한 결과를 리턴한다.
소스
print(s1.union(s2)) |
결과
{1, 2, 3, 4, 5, 6, 7, 8, 9} |
3) 차집합
차집합은 빼기 "-" 기호를 이용하여 구할 수 있다.
소스
print(s1 - s2) |
결과
{1, 2, 3} {8, 9, 7} |
difference 함수를 이용해도 차집합을 구할 수 있다.
소스
print(s1.difference(s2)) print(s2.difference(s1)) |
결과
{1, 2, 3} {8, 9, 7} |
3. 집합 자료형 관련 함수들
1) 1개 값 추가하기(add)
이미 만들어진 set 자료형에 값을 추가할 수 있다. 1개의 값을 추가할 때는 add 함수를 사용한다.
소스
s1 = set([1, 2, 3]) s1.add(4) print(s1) |
결과
{1, 2, 3, 4} |
2) 여러 개의 값 추가하기(update)
여러 개의 값을 한꺼번에 추가할 때는 update 함수를 사용한다.
소스
s1 = set([1, 2, 3]) s1.update([4, 5, 6]) print(s1) |
결과
{1, 2, 3, 4, 5, 6} |
3) 특정 값 제거하기(remove)
특정 값을 제거하고 싶을 때는 remove 함수를 이용한다.
소스
s1 = set([1, 2, 3]) s1.remove(2) print(s1) |
결과
{1, 3} |