반응형
세트(set)
- 파이썬에서의 세트는 우리가 중/고등학생 때 배웠던 '집합'과 같은 개념입니다.
- 세트는 중복을 허용하지 않습니다.
- 만약 중복된 요소를 입력하면, 세트는 자동으로 중복된 요소를 제거합니다.
- 세트의 항목 간에는 순서가 없습니다.
- 따라서 세트는 인덱싱이나 슬라이싱과 같은 시퀀스의 함수를 사용할 수 없습니다.
- 대신 in 연산자를 활용해 어떠한 항목이 세트에 원소로 존재하는지 검사할 수 있습니다.
- 또한 입력한 데이터의 순서와, for 반복문을 이용해 세트의 각 항목에 접근하는 순서가 다를 수 있습니다.
- 세트는 모든 요소들을 해싱(hashing)을 사용해 저장하고 관리합니다.
- hashing: 각 개체에 식별할 수 있는 코드를 부여하여 객체를 테이블에 저장하는 것
- 해쉬 코드는 변경되면 안 됩니다. 만약 변경 가능한 리스트를 포함하게 되면 이 해쉬 코드가 변경될 가능성이 있습니다. 따라서 세트는 리스트를 원소로 포함할 수 없습니다.
- 세트는 중괄호 기호{}로 감싸 생성할 수 있습니다.
- 세트도 리스트, 튜플과 마찬가지로 세트 안에 여러 자료형을 섞을 수 있지만, 리스트는 포함할 수 없습니다.
- 만약 비어 있는 세트를 생성하려면 set() 함수를 사용해야 합니다.
세트 요소 추가 및 삭제
세트는 변경 가능한 객체이지만, 인덱스가 없기 때문에 인덱싱이나 슬라이싱 연산은 의미가 없습니다. 따라서 요소를 추가하거나 삭제하려면 아래와 같은 함수들을 사용해야 합니다.
- add(): 요소 하나 추가
- update(): 요소 여러개를 한꺼번에 추가. 중복은 추가되지 않음
- discard(): 요소 삭제
- remove(): 요소 삭제
- clear(): 세트 요소 전체 삭제
세트의 부분 집합 연산
- 두 개의 세트가 같은지 검사
A = {1, 2, 3}
B = {1, 2, 3}
print(A == B)
print(A != B)
'''
>>> True
>>> False
'''
- 상위 집합 또는 진상위 집합 검사
- <: 상위 집합 검사
- <=: 진상위 집합(상위 집합이지만 같지는 않은) 검사
- 부분 집합
- issubset(): 부분집합인지 검사
- isupset(): 상위집합인지 검사
- in: 요소가 집합에 포함되는지 검사
- 집합 연산
- 세트는 집합의 교집합이나 합집합과 같은 여러 가지 집합 연산을 지원합니다.
- 합집합: | 연산자, union()
- 교집합: & 연산자, intersection()
- 차입합: - 연산자, difference()
- 기타: all(), any(), enumerate(), len(), max(), min(), sorted(), sum()
반응형