8-1. 집합 자료형

박성혜·2023년 3월 28일

[Python] 1. 왕초보

목록 보기
15/20
post-thumbnail

구글 코랩이나 주피터 노트북에서 직접 작성하며 풀어보세요.


집합 자료형은 중고등학교 때 배웠던 그 집합을 말하는 게 맞다.
집합 자료형은 set함수를 사용해서 만들 수 있고,
표현은 중괄호로 한다.

예시)

a = set([1, 2, 3])
print(a)

{1, 2, 3}

set함수가 리스트 1, 2, 3을 집합화해서
결과 값으로 집합 형태인 {1, 2, 3}이 나왔다.
그림으로 표현해보면 이렇다.

딕셔너리 자료형과의 공통점

  • 중괄호를 사용한다.
  • 순서가 없다.
  • 중복을 허용하지 않는다. (정확히 말하면 딕셔너리는 key값 중복을 허용하지 않는다.)

딕셔너리 자료형과의 차이점

  • 딕셔너리 자료형에만 key값과 value값이 존재한다.

집합 자료형은 중복을 허용하지 않는다는 것의 예시

a = set("Hello")
print(a)

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

중복된 l은 삭제된 걸 확인할 수 있다.

1. 교집합

& 키를 사용해서 교집합을 구할 수 있다.

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1 & s2)

{4, 5, 6}

2. 합집합

| 키를 사용해서 교집합을 구할 수 있다.
이 키는 원화 단위 키 위에 있어서 shift + \를 누르면 된다.
맥의 경우는 역슬래쉬 키를 shift 누르고 누르면 된다.

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1 | s2) 

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

3. 차집합

뺄셈 기호로 차집합을 구할 수 있다.

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1 - s2) 

{1, 2, 3}

4. 집합 전용 함수

1) add 함수

집합 원소 하나를 추가하는 함수다.

a = set([1, 2, 3)
a.add(4)
print(a)

{1, 2, 3, 4}

2) update 함수

집합 원소 여러 개를 추가하는 함수다.

a = set([1, 2, 3)
a.update([4, 5, 6])
print(a)

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

3) remove 함수

특정 집합 원소를 삭제하는 함수다.

a = set([1, 2, 3)
a.remove(2)
print(a)

{1, 3}

4) union 함수

합집합을 구하는 함수다.

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1.union(s2)) 

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

그냥 &을 사용하는 게 더 편하다.

5) intersection 함수

교집합을 구하는 함수다.

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
print(s1.intersection(s2)) 

{4, 5, 6}

그냥 |를 사용하는 게 더 편하다.

5. 멤버 연산자

변수 안에 특정 값이 있는지 확인할 때 사용한다.

a = set([1, 2, 3, 4, 5, 6])
print(5 in a)

True

6. Quick 실습 문제

a = [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]
위의 리스트 a를 [5, 4, 3, 2, 1]로 바꿔라.

해설

a = [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]
a = set(a)
a = list(a)
a.reverse()
print(a)

[5, 4, 3, 2, 1]

내림차순 방법은 여러 가지가 있으니 편한 방법을 사용하면 된다.


여기까지 파이썬 집합 자료형에 대한 설명이었습니다.

수정이 필요한 부분이나 이해가 안 가는 부분이 있다면 언제든 말씀해주세요!^0^

다음 글에서는 집합 자료형 실습 문제를 풀어볼게요.

그럼 이만
총총

profile
인공지능이 인공지능을 개발하면 인공지능일까

0개의 댓글