1. 다른 컬렉션의 중복을 제거할 때
집합에 아이템은 한 번만 저장될 수 있다. 그래서 다른 컬렉션의 중복을 제거하기 위해 사용될 수 있다.
다만, 집합에는 순서가 없기 때문에 아이템들의 순서가 바뀔 수 있다.
list_ = [1, 2, 2, 3, 3, 3, 4]
list_ = list(set(list_))
list_
#--==>> [1, 2, 3, 4]
2. 가변 객체들 간의 차이를 구할 때
집합은 리스트, 문자열, 가변 객체들 간의 차이를 구하고 싶을 때 사용될 수 있다.
다만, 여기서도 집합의 비정렬 특성으로 인해 결과의 순서는 원본과 다를 수 있다.
# 리스트의 차이
set([3, 5, 7]) - set([1, 2, 5])
#--==>> {3, 7}
# 문자열의 차이
set('abcd') - set('def')
#--==>>{'b', 'a', 'c'}
# 혼합 타입의 차이
set('abcd') - set(['a', 'b', 'f'])
#--==>> {'c', 'd'}
3. 순서에 상관없이 두 객체가 같은지 비교할 때
집합을 이용해 순서에 상관없이 두 객체가 같은지 비교할 수 있다.
예를 들어 같은 내용의 결과를 다른 순서로 생성할 경우 사용할 수 있다.
list_1, list_2 = [1, 2, 3, 4], [4, 3, 2, 1]
list_1 == list_2
#--==>> False
# 순서에 상관없는 비교
set(list_1) == set(list_2)
#--==>> True
# 정렬해서 비교
sorted(list_1) == sorted(list_2)
#--> True
# 문자열도 가능
str_1, str_2 = 'abc', 'bca'
str_1 == str_2
#--> False
set(str_1) == set(str_2)
#--> True
4. 같은 거대한 데이터를 다룰 때
집합은 DB 쿼리 결과와 같이 거대한 데이터를 다룰 때 편리하다.
# 커피를 좋아하는 사람
coffee = {'kim', 'lee', 'park', 'cho'}
# 차를 좋아하는 사람
tea = {'kim', 'park', 'koo', 'ki'}
# cho는 커피를 좋아하는가?
'cho' in coffee
#--> True
# 커피와 차 둘다 좋아하는 사람
coffee & tea
{'kim', 'park'}
# 모든 사람
coffee | tea
#--> {'koo', 'cho', 'ki', 'kim', 'lee', 'park'}
# 커피만 좋아하는 사람
coffee - tea
#--> {'lee', 'cho'}
# 커피를 좋아하는 모든 사람들은 차를 좋아하는가?(포함 집합)
coffee > tea
#--> False
# lee는 차를 좋아하는가?(부분 집합)
{'lee'} < tea
#--> False
# 둘 중에 하나만 좋아하는 사람
coffee ^ tea
#--> {'koo', 'ki', 'cho', 'lee'}
'Python > Python' 카테고리의 다른 글
Python 에서의 Lambda method (0) | 2023.02.22 |
---|---|
참조에 의한 변수와 객체 연결 (0) | 2023.01.11 |
불변성과 문자열 수정 (0) | 2023.01.06 |
반내림 vs 내림(Python3) (0) | 2023.01.05 |
컴프리헨션 (0) | 2022.12.28 |