카테고리 없음
집합(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
[문제]