Client/Python

파이썬의 자료형들 [리스트, 튜플, 딕셔너리, 집합] 4.집합

Ardmos :) 2017. 3. 24. 22:22

집합 자료형은 set 키워드를 통해 만들 수 있다.


s1 = set([1, 2, 3])

s1

=> {1, 2, 3}


s2 = set("Hello")

s2

=> {'e', 'l', 'o', 'H'}


그런데 결과에서 볼 수 있다시피 집합 자료형은 몇가지 특징이 있다.

1. 중복을 허용하지 않는다.

2.순서가 없다(Unordered).


딕셔너리나 집합과 같은 순서가 없는 자료형에서는 인덱싱을 통해 값을 얻어낼 수가 없다.

그래서 집합을 인덱싱 하고 싶을때는 아래에서처럼 리스트나 튜플의 형태로 변환해주어야 한다.


s1 = set([1, 2, 3])

lst1 = list(s1)

lst1

=> [1, 2, 3]

lst1[1]

=> 2


s1 = set([1, 2, 3])

tu1 = tuple(s1)

tu1

=> (1, 2, 3)

tu1[1]

=> 2


그리고 집합 자료형은 이름이 집합이니 만큼 우리가 중학교 고등학교때 배웠던 교집합, 합집합, 차집합을 해줄 수 있다.


s1 = set([1, 2, 3, 4, 5, 6])

s2 = set([4, 5, 6, 7, 8, 9])

일 때,

 

교집합 구하기

s1 & s2

=> {4, 5, 6} 

s1.intersection(s2)

=> {4, 5, 6}


합집합 구하기

s1 | s2

=> {1, 2, 3, 4, 5, 6, 7, 8, 9}

s1.union(s2)

=> {1, 2, 3, 4, 5, 6, 7, 8, 9}


차집합 구하기

s1 - s2

=> {1, 2, 3}

s1.difference(s2)

=> {1, 2, 3}


이미 만들어진 집합 자료형에 값을 추가하거나 삭제해줄 수도 있다.


값 1개 추가하기

s1 = set([1, 2, 3])

s1.add(4)

s1

=> {1, 2, 3, 4}


값 여러개 추가하기

s1 = set([1, 2, 3])

s1.update([4, 5, 6])

s1

=> {1, 2, 3, 4, 5, 6}


특정 값 제거하기

s1 = set([1, 2, 3])

s1.remove(2)

s1

=> {1, 3}

728x90