본문 바로가기
Python

[Python] 내장 함수 Set사용하기

by 고체물리학 2021. 9. 22.

- 순서가 없는 집합

- unique한 값을 갖기 때문에 중복 값을 가질 수 없다

- set() 키워드 또는 중괄호를 이용한다

 

1. set 함수 선언- set() 키워드 또는 중괄호를 이용한다

s1 = set()
s2 = set([1,2,3,4])
s3 = {1,2,3,4}
print(s1)
print(type(s1))
print(s2)
print(type(s2))
print(s3)
print(type(s3))

 

[결과]

 

2. unique한 값을 갖기 때문에 중복 값을 가질 수 없다

s1 = {1, 2, 3, 4, 1, 2, 3, 4}
print(s1)

[결과]

 

3. set 원소에 값 추가 add

s1 = {1, 2, 3, 4, 1, 2, 3, 4}
print(s1)
s1.add(5)
print("add:", s1)

[결과]

 

4. set 원소에 여러 개의 값 추가 update

- list 형식으로 추가

s1 = {1, 2, 3, 4, 1, 2, 3, 4}
print(s1)
s1.update([5, 6, 7])
print("update:", s1)

[결과]

 

5. set 원소 값 제거하기 remove, discard

- remove(element)

s1 = {1, 2, 3, 4, 1, 2, 3, 4}
print(s1)
s1.remove(1)
print("remove:", s1)

[결과]

 

지우고자하는 원소가 set에 없으면 KeyError 발생

s1 = {1, 2, 3, 4, 1, 2, 3, 4}
print(s1)
s1.remove(5)
print("remove:", s1)

 

- discard(element)

s1 = {1, 2, 3, 4, 1, 2, 3, 4}
print(s1)
s1.discard(1)
print("discard:", s1)

[결과]

 

지우고자하는 원소가 없어도 에러 발생하지 않음

s1 = {1, 2, 3, 4, 1, 2, 3, 4}
print(s1)
s1.discard(5)
print("discard:", s1)

[결과]

 

6. set 복사 copy

s1 = {1, 2, 3, 4, 1, 2, 3, 4}
print(s1)
s2 = s1.copy()
print("copy:", s2)

[결과]

7. set 연산자: 합집합(|), 교집합(&), 차집합(-), 대칭차집합(합집합 - 교집합), 

s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
s3 = s1|s2
print("합집합",s3)
s4 = s1&s2
print("교집합",s4)
s5 = s1-s2
print("차집합",s5)
s6 = s1^s2
print("대칭차집합",s6)

[결과]

 

8. set 연산메소드: 합집합(union),교집합(intersection),차집합(difference), 대칭차집합(symmetric_difference)

- 합집합(union)

s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
s3 = s1.union(s2)
print("합집합",s3)

 

- 교집합(intersection)

s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
s3 = s1.intersection(s2)
print("교집합",s3)

 

- 차집합(difference)

s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
s3 = s1.difference(s2)
print("차집합", s3)

 

- 대칭차집합(symmetric_difference)

s1 = {1, 2, 3, 4}
s2 = {3, 4, 5, 6}
s3 = s1.symmetric_difference(s2)
print("대칭차집합", s3)

 

9. set - 기타 메서드

- issubset: 부분 집합 여부

s1 = {1, 2, 3, 4}
s2 = {3, 4}
s3 = s1.issubset(s2)
print("부분집합", s3)
s3 = s2.issubset(s1)
print("부분집합", s3)

 

- issuperset: 상위 집합 여부, issubset과 결과는 반대

s1 = {1, 2, 3, 4}
s2 = {3, 4}
s3 = s1.issuperset(s2)
print("상위집합", s3)
s3 = s2.issuperset(s1)
print("상위집합", s3)

 

- isdisjoint: 교집합이면 False, 교집합이 아니면 True

s1 = {1, 2, 3, 4}
s2 = {3, 4}
s3 = s1.isdisjoint(s2)
print("교집합", s3)
s1 = {1, 2, 3, 4}
s2 = {5, 6, 7 ,8}
s3 = s1.isdisjoint(s2)
print("교집합", s3)

 

반응형

댓글