민수야, 너도 할 수 있어
Python 공부 (7) - 자료형(집합) 본문
자료형 - 집합(Set)
집합 자료형은 집합에 관련된 것들을 쉽게 처리하기 위해 만들어진 자료형이다.
집합 자료형 만드는 법
s1 = set([2,4,6])
print(s1) #{2,4,6}
s2 = set("hello")
print(s2) #{'e','l','o','h'}
위와 같이 집합 자료형을 만드는 방법은 set 함수 안에 리스트, 튜플, 문자열을 넣으면 된다.
집합 자료형의 특징
- 순차적이지 않다.
위 예제를 다시 살펴보았을 때, 인자로 전달한 문자열은 'hello'지만, 반환된 집합은 순서가 뒤죽박죽이다. 이는, 앞서 배운 딕셔너리 자료형과 동일하게 비순차적인(out of order) 자료형이어서 순서 상관없이 요소들이 배치되는 것이다.
- 중복을 허용하지 않는다.
위 예제에서 s2에 전달한 문자열에는 'l' 이 두번 들어가지만, s2를 출력했을 때에는 'ㅣ'이 한개 밖에 없다. 이는, 집합 자료형이 중복을 허용하지 않기 때문이다.
a = [1,1,2,2,3,3]
s = set(a)
print(s) #{1,2,3}
b = list(s)
print(b) #[1,2,3]
print(b[0]) #1
위 예제처럼, 중복을 허용하지 않는 집합의 특징을 이용하여 리스트나 튜플을 집합으로 변환했다가 다시 재변환하기도 한다. 집합 자료형을 필터로 이용하는 것이다. 또한, 집합은 순서가 없기 때문에 딕셔너리와 같이 인덱싱을 사용할 수 없다. 그렇기에 위 예제처럼 순서가 있는 자료형(문자열, 리스트, 튜플)으로 변환하여 인덱싱을 사용할 수 있다.
집합 자료형 활용하기
아래의 예제들은 모두 s1 = set(['a','b','c'])
와 s2 = set(['c','d','e'])
가 선언되어있음을 가정하고 보아야한다.
- 교집합
print(s1 & s2) #{'c'}
print(s1.intersection(s2)) #{'c'}
두 집합의 교집합을 구하기 위해서 &
연산자를 사용하거나, intersection 함수를 위와 같이 사용할 수 있다.
- 합집합
print(s1 | s2) #{'a','b','c','d','e'}
print(s1.union(s2)) #{'a','b','c','d','e'}
두 집합의 합집합을 구하기 위해서 |
연산자를 사용하거나, union 함수를 위와 같이 사용할 수 있다.
- 차집합
print(s1 - s2) #{'a','b'}
print(s2 - s1) #{'d','e'}
print(s1.difference(s2)) #{'a','b'}
print(s2.difference(s1)) #{'d','e'}
두 집합의 차집합을 구하기 위해서 -
연산자를 사용하거나, difference 함수를 위와 같이 사용할 수 있다.
집합 자료형 관련 함수들
아래의 예제들은 모두 s1 = set(['a','b','c'])
가 선언되어있음을 가정하고 보아야한다.
- 한개의 값 추가하기 (add)
s1.add('e')
print(s1) #{'a','b','c','e'}
add 함수에 인자로 전달된 하나의 값을 집합에 추가한다. 단, 여러개의 값은 추가하지 못한다.
- 여러개의 값 추가하기 (update)
s1.update(['d','e'])
print(s1) #{'a','b','c','d','e'}
add 함수에 인자로 전달된 여러개의 값을 집합에 추가한다.
- 특정 값 제거하기 (remove)
s1.remove('a')
print(s1) #{'b','c'}
remove에 제거하고 싶은 값을 인자로 전달하면 그 값을 집합 내에서 제거할 수 있다.
이번 포스팅까지 python의 자료형들을 공부해봤다. 다음 포스팅에서는 가변(mutable) vs. 불변(immutable) 과 순차적(sequential) vs. 비순차적(out of order) 에 대해 다룰것이다. 참고로, 저자는 공부자료로 박응용 저자의 점프 투 파이썬 책을 이용하고 있다. 이는 구글에서도 무료로 볼 수 있으니 공부에 참고하길 바란다.
'언어 > python' 카테고리의 다른 글
Python 공부 (9) - 제어문(if) (1) | 2020.02.15 |
---|---|
Python 공부 (8) - mutable(가변) 과 sequential(순차적) (0) | 2020.02.12 |
Python 공부 (6) - 자료형(딕셔너리) (0) | 2020.02.01 |
Python 공부 (5) - 자료형(튜플) (0) | 2020.01.30 |
Python 공부 (4) - 자료형(리스트) (0) | 2020.01.30 |