카테고리 없음

집합(Set) 자료형

root_go 2023. 8. 11. 16:10
a = (1, 2, 3, [10, 20, 30])
a[3][1] = 200
print(a)

# (1, 2, 3, [10, 200, 30])

5.집합(Set) 자료형

  • 집합 연산(교집합, 합집합, 차집합, 대칭 차집합) 을 위한 자료형 입니다.
  • 중복을 허용하지 않아 중복된 원소는 하나만 제외하고 모두 무시됩니다.
  • 원소의 순서가 의미가 없으므로 인덱싱으로 값을 얻을 수 없습니다.

5.1.1.집합 직접 만들기

 

1) 정수를 갖는 집합

# 정수를 갖는 집합
nums = {1, 2, 3, 4, 5}

# 확인
nums

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

 

2) 문자열을 갖는 집합

# 문자열을 갖는 집합
members = {'홍길동', '일지매', '한사랑'}

# 확인
members

# {'일지매', '한사랑', '홍길동'}

 

3) 여러 자료형을 갖는 집합

# 여러 자료형을 갖는 집합
etc = {10, '홍길동', 20, '일지매'}

# 확인
etc

 

5.2.1.교집합, 합집합, 차집합

  • 집합 자료형을 사용하는 목적이 이것일 것입니다.

1) 합집합

  • 합집합은 | 또는 union() 메소드를 사용해 구합니다.
# 집합 만들기
member_set1 = {'홍길동', '한사랑', '일지매', '박여인'}
member_set2 = {'한사랑', '홍길민', '강우동'}

# 합집합 구하기 #1
member_set3 = member_set1 | member_set1

# 확인
member_set3

 

2) 교집합

  • 교집합은 & 또는 intersection() 메소드를 사용해 구합니다.

3) 차집합

  • 차집합은 - 또는 difference() 메소드를 사용해 구합니다.

4) 대칭 차집합

  • 대칭 차집합은 ^ 또는 symmetric_difference

1) 리스트 중복 확인

  • 우선 교집합을 활용해 두 리스트 사이의 중복된 요소를 확인할 수 있습니다.
# 리스트 만들기
nums1 = [12, 23, 32, 36, 41, 48]
nums2 = [12, 19, 24, 32, 36, 47]

# 집합 변환 후 교집합 구하기
nums = set(nums1) & set(nums2)

# 집합 --> 리스트 변환
nums = list(nums)

# 확인
nums	#[...]

 

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

  • 합집합 기능을 활용해 두 리스트의 중복된 요소를 제거하면서 합칠 수 있습니다.

[문제]

# 중복 요소를 갖는 리스트
nums = [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 8, 9]

# 중복 요소 제거
nums = list(set(nums))

# 확인
nums

 

[문제]