본문 바로가기

Python

Python - Set

집합은 { } 로 감싸고, 요소끼리는 쉼표로 구분한다. 선언은 set()또는 값을 넣은 { }으로 해야되고, { } 만으로는 할 수 없다.

순서가 없으며 중복 데이터와 mutable한 건 요소로 넣을 수 없다.

s1 = {element1, element2, element3, ... }

 

순서가 없으니 인덱스 기호를 사용할 수 없다.

중복된 데이터를 가질 수 없으니 +, *를 사용할 수 없다.

중복을 허용하지 않는 특성을 이용해 다른 자료형의 중복을 제거하기 위해 사용하기도 한다.

 

iterable한 객체를 넣으면 변환하여 집합을 만든다.

s1 = set(문자열)    이 경우엔 문자열을 알파벳 단위로 쪼개 넣는다.

&, |, -, ^ 연산자는 =와 조합해서 연산과 동시에 할당할 수 있다(파이썬 기초 연산의 += 같은 느낌).

빈 집합 만들기

새로 선언    s1 = set()

기존 집합 비우기    s1.clear()

있는 값 확인

값이 있는지 확인    val in s1

값이 없는지 확인    val not in s1

리스트 길이 구하기    len(s1)

확장

하나의 요소를 추가    s1.add(val)

여러개의 요소를 한꺼번에 추가    s1.update(lst)

뽑아내면서 삭제

임의의 요소 뽑아내기    s1.pop()    끝값을 뽑는게 아니다! 참고 링크

삭제

찾는 값이 존재하지 않으면 KeyError 발생    s1.remove(val)

찾는 값이 없어도 에러 안 냄    s1.discard(val)

복사(shallow)

s2 = s1.copy()

s2 = set(s1)

교집합

s1 & s2

s1.intersection(s2)

합집합

s1 | s2

s1.union(s2)

차집합

s1 - s2

s1.difference(s2)

대칭차집합(합집합 - 교집합)

s1 ^ s2

s1.symmetric_difference(s2)

부분집합 여부 확인

s1이 s2의 부분집합인지 확인    s1.issubset(s2)

cf. 반대 superset인지 확인    s1.issuperset(s2)

교집합 여부 확인

교집합이 없으면 True    s1.isdisjoint(s2)

 

 

참고 교재1

참고 교재2

참고 링크

 

'Python' 카테고리의 다른 글

Python - list vs tuple, set vs dictionary  (0) 2021.01.15
Python - Dictionary  (0) 2021.01.15
Python - Tuple  (0) 2021.01.15
Python - List  (0) 2021.01.14
Python - Function Parameters  (0) 2021.01.14