[AIVLE SCHOOL] 데이터 다루기(5) - 집합

춤추는 머쉬룸·2024년 9월 6일

AIVLE SCHOOL 6기

목록 보기
8/80
post-thumbnail

9/6 2, 3세션

A. 집합 {}

  • 영어로는 set
  • 순서가 의미 없다 (정렬이 의미 없다)
  • 순서가 없으므로 인덱싱, 슬라이싱이 불가능하다
  • 중복을 허용하지 않는다
  • 포함, 미포함이 중요한 것임
> A = {1, 2, 3}
> B = {3, 2, 1}
> C = {1, 2, 2, 3}

A == B == C

TIP! True가 왜 출력이 안되지?

etc = {'대한민국', 1, 2, True}
{'대한민국', 1, 2}
etc = {'대한민국', 3, 2, True}
{'대한민국', 3, 2, True}

▶️ True는 1이상의 숫자이기 때문에 중복으로 간주되서 출력되지 않음


B. 집합의 다양한 활용

B-1) 원소 포함 여부 확인

# 집합 만들기
> member1 = {'홍길동', '한사랑', '일지매', '박여인'}
> member2 = {'김치국', '안경태', '이리와'}

# 확인
> print('홍길동' in member1)
> print('홍길동' not in member2)

True
True

B-2) 리스트 중복 요소 제거 (순서 변경 위험 있음)

# 리스트 만들기
> nums = [12, 45, 23, 21, 36, 28, 12, 36, 35, 28, 45, 63, 12, 21]
> nums = set(nums)
> nums = list(nums)

#확인
> nums

[35, 36, 12, 45, 21, 23, 28, 63]

C. 집합 연산

C-1. 합집합

  • | 또는 union() 메서드 사용
  • 순서를 바꿔도 무관함

C-2. 교집합

  • & 또는 intersection() 메서드 사용

C-3. 차집합

  • - 또는 difference() 메서드 사용
  • 순서를 바꾸면 안됨

C-4. 대칭 차집합

  • ^ 또는 symmetric_difference() 메서드 사용

D. 집합 연산 활용

D-1) 리스트 중복 확인

  1. 리스트를 집합으로 변환
  2. 교집합(&)을 활용해 리스트 사이의 중복된 요소 확인
  3. 집합을 리스트로 다시 변환

D-2) 리스트 중복 없이 합치기

  1. 리스트를 집합으로 변환
  2. 합집합(|)을 활용해 리스트의 중복 요소 제거
  3. 집합을 리스트로 다시 변환

E. 집합 관련 메서드

집합은 순서가 의미가 없어서 리스트 메서드와는 다름

  • add(v) : 요소 하나 추가
  • update(묶음) : 요소 여러개(리스트, 튜플, 집합, 딕셔너리) 추가
  • pop() : 무작위로 요소 하나 삭제하고 삭제한 요소 반환
  • remove(v) : 지정한 요소를 삭제. 없으면 오류 발생
  • discard(v) : 지정한 요소를 삭제. 없어도 오류 나지 않음
  • clear() : 모든 요소 삭제

TIP! clear() 의 사용
member_set = {} 는 집합의 모든 요소를 삭제하는 게 아니라 딕셔너리를 선언하는 것이다. 그래서 type 이 dict 으로 바뀐다.
member_set.clear() 를 하고 type 을 찍어보면 set() 이라고 뜬다.

0개의 댓글