python
파이썬 set() 집합 함수 총정리
반응형
1. set() 집합이란?
: 순서가 없고 각 요소는 유니크하다, set은 mutable(변경가능) 한 객체이다.
*mutable(변경가능) 객체 : 리스트(list), 딕셔너리(dict), set,, -> id() 값은 일정하고 내부 값만 바뀜
*immutable(불변) 객체 : 자료형(int,str), 튜플(tuple) -> 내부 값이 바뀌면 id() 값이 바뀜
*set 자체는 mutable 객체지만 내부 요소로 mutable 한 값을 가질 수 없다.
s = {"1", 3, 5, (1,3)}
<아래는 Type Error>
s = {"1", 3, 5, [1,3]}
s = {"1", 3, 5, {1,3}}
s = {"1", 3, 5, {1:1,3:3}}
2. 사용법
s = set([1,3,5,7])
>> {1, 3, 5, 7}
- set() 은 순서가 없어서 어떤 값이 먼저 나올지 알 수 없다.
for i in {1, 2, 4, 8, 16,32}:
print(i)
>>32
1
2
4
8
16
- 요소 들어있는지 확인 ( list 보다 빠르다 )
s = set([1,3,5,7])
print(3 in s)
>> True
- s.add() 요소 추가
k = {1, 3}
k.add(5)
>>{1, 3, 5}
- s.update() set에 리스트 한번에 추가(중복 값은 제거됨)
k = {1, 2, 3}
k.update([3, 4, 5])
>> {1, 2, 3, 4, 5}
- s.remove() set의 요소 제거 -> 없는 요소면 에러남
k = {1, 2, 3}
k.remove(3)
>> {1, 2}
# 없는걸 제거하면 keyError
k.remove(5)
- s.discard() : set의 에러 없는 요소제거 -> 없는 요소를 넣어도 에러 안남
k = {1, 2, 3}
k.discard(5)
>> {1, 2, 3}
- s.copy() : set의 복사
s = {1, 3, 5}
t = s.copy()
>> s : {1, 3, 5}
>> t : {1, 3, 5}
- set() 집합 연산자 : 합집합, 교집합, 차집합
1) 합집합 : a_set | b_set (= a_set.union(b_set))
a_set = {1, 2, 3, 4, 5}
b_set = {3, 4, 5, 6, 7}
c_set = a | b
>> {1, 2, 3, 4, 5, 6, 7}
d_set = a_set.union(b_set)
>> {1, 2, 3, 4, 5, 6, 7}
2) 교집합 : a_set & b_set ( = a_set.intersection(b_set))
a_set = {1, 2, 3, 4, 5}
b_set = {3, 4, 5, 6, 7}
c_set = a & b
>> {3, 4, 5}
d_set = a_set.intersection(b_set)
>> {3, 4, 5}
3) 차집합 : a_set - b_set ( = a_set.difference(b_set))
a_set = {1, 2, 3, 4, 5}
b_set = {3, 4, 5, 6, 7}
c_set = a_set - b_set
>> {1, 2}
d_set = b_set - a_set
>> {6, 7}
e_set = a_set.difference(b_set)
>> {1, 2}
f_set = b_set.difference(a_set)
>> {6, 7}
4) (합집합 - 교집합) : a_set ^ b_set (= a_set.symmetric_difference(b_set))
a_set = {1, 2, 3, 4, 5}
b_set = {3, 4, 5, 6, 7}
c_set = a ^ b
>> {1, 2, 6, 7}
d_set = a_set.symmetric_difference(b_set)
>> {1, 2, 6, 7}
5) a.issubset(b) : a가 b의 부분집합 여부 확인
a = {1, 2, 3, 4, 5}
b = {1, 2, 3}
a.issubset(b)
>> False
b.issubset(a)
>> True
6) a.issuperset(b) : a가 b를 부분집합으로 가지고 있는지 확인
a.issubset(b) 와 반대
a = {1, 2, 3, 4, 5}
b = {1, 2, 3}
a.issuperset(b)
>> True
b.issuperset(a)
>> False
7) a.isdisjoint(b) : a와 b 사이에 교집합이 1개도 없으면 True, 있으면 False
a = {1, 2, 3}
b = {4, 5, 6}
a.isdisjoint(b)
>> True
c = {1, 2, 3}
d = {3, 4, 5}
c.isdisjoint(d)
>> False
반응형
'python' 카테고리의 다른 글
[자료구조] BFS, DFS 총정리 (0) | 2021.06.21 |
---|---|
[자료구조] 파이썬 스택(stack) 총정리 (3) | 2021.06.21 |
파이썬 collections 모듈 Counter 사용법 (0) | 2021.06.20 |
[자료구조] 파이썬 큐(Queue), deque 사용법 총정리 (0) | 2021.06.19 |
람다(lambda) 총 정리, key sort, key 정렬 (0) | 2021.05.14 |
댓글