반응형

안녕하세요 HiCreate입니다!! 벌써 20번째 파이썬 글이네요

이번 포스팅에서는 집합 자료형에 대해서 알아볼텐데요. 수학에서 말하는 그 집합이라고 보시면 편할 것 같습니다.

 

집합은 주어진 성질을 만족시키는 원소의 모임인데요 (원소는 집합을 구성하는 겁니다.)

집합은 영어로 set(세트)라고 합니다. 그래서 파이썬에서도 set()으로 집합을 만듭니다.

변수명 = set() 형식으로 말이죠.

 

집합의 성질 중 하나는 대표성이죠. 즉, 중복되는 수는 1개로 표현합니다.

예를 들어서 [1,2,3,1,2,3]이 있다면 집합에서는 {1,2,3} 이렇게만 나타낸다는 것이죠.

파이썬에서도 자동적으로 대표성을 띄게 만들어줍니다.

 

set은 변경가능, frozenset은 변경이 불가능한 자료형입니다.

그러나 집합 자체는 변경 불가능 자료형입니다. 그래서 원소는 해쉬가 가능한 변경 불가능 자료형만 받을 수 있죠.(리스트는 안 되고, 튜플은 됩니다.)

 

다음은 명령어입니다.

코딩 같은 표현 의미
len(S)   원소의 개수
x in S   x가 S의 원소인가?(맞으면 True)
x not in S   x가 S의 원소가 아닌가?(아니어야 True)
S.issubset(T) S <= T S가 T의 부분집합인가?
S.issuperset(T) S >= T S가 T를 포함하는가?
S.union(T) S | T (S shft+\ T) S와 T의 합집합
S.intersection(T) S & T S와 T의 교집합
S.difference(T) S - T S와 T의 차집합
S.symmetric_difference(T) S ^ T S와 T의 합집합에서 교집합을 제외(배타집합)
S.copy()   S를 얕은 복사

이외에 set에만 적용되는 연산들이 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
>>> S = set([1,2,3,4,5,6,7,8,9])
>>> T = set([5,6,7,8,10,20,30,40])
>>> S.update(T) # 합집합을 S에 저장
>>> S
{12345678940102030}
>>> S |= T # 같은거
>>> S
{12345678910203040}
>>> S.intersection_update(T) # 교집합을 S에 저장
>>> S
{567840102030}
>>> S &= T # 같은거
>>> S
{567840102030}
>>> S = set([1,2,3,4,5,6,7,8,9])
>>> S.difference_update(T) # 차집합을 저장
>>> S-=# 같은거
>>> S
{12349}
>>> S = set([1,2,3,4,5,6,7,8,9])
>>> S.symmetric_difference_update(T) # 배타집합을 저장
>>> S
{1234409102030}
>>> S^=# 같은거
>>> S
{123465978}
>>> S.add(0# 원소 추가
>>> S
{0123465978}
>>> S.remove(9#원소제거
>>> S.discard(1# 원소가 있으면 제거
>>> S
{02346578}
>>> S.pop() # 가장 최근에 저장된 원소 제거
0
>>> S
{2346578}
>>> S.clear() # 집합 
>>> S
set()
cs

그럼 이번 포스팅을 마치도록 하겠습니다. 감사합니다.


반응형

BELATED ARTICLES

more