문제를 풀다가 set이 필요한 내용이 있어 공부겸 정리 한다.
set() 은 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형이다.set 키워드를 사용한다.s1 = set([1,2,3])
print(s1)
=> {1,2,3}
s1 = set([1, 2, 3, 4, 5])
s2 = set([4, 5, 6, 7, 8])
# 교집합 메서드 intersection
print(s1.intersection(s2))
# 교집합 연산자 &
print(s1 & s2)
==>
{4,5}
{4,5}
intersection 메서드와 & 연산자를 사용하여 교집합을 구할 수 있다.s1 = set([1, 2, 3, 4, 5])
s2 = set([4, 5, 6, 7, 8])
# 합집합 메서드 union
print(s1.union(s2))
# 합집합 연산자 |
print(s1 | s2)
=>
{1,2,3,4,5,6,7,8,}
{1,2,3,4,5,6,7,8,}
union 메서드 와 | 연산자 를 사용하여 합집합을 구할 수 있다.s1 = set([1, 2, 3, 4, 5])
s2 = set([4, 5, 6, 7, 8])
# 차집합 메서드 difference
print(s1.difference(s2))
print(s2.difference(s1))
# 차집합 연산자 -
print(s1 - s2)
print(s2 - s1)
=>
{1,2,3}
{8,6,7}
{1,2,3}
{8,6,7}
difference 메서드 와 - 연산자를 사용하여 차집합을 구할 수 있다.s1 = set([1, 2, 3, 4, 5])
s2 = set([4, 5, 6, 7, 8])
# 차집합 메서드 difference
print(s1.symmetric_difference(s2))
print(s2.symmetric_difference(s1))
=>
{1,2,3,6,7,8}
{1,2,3,6,7,8}
s1 = set([1, 2, 3, 4, 5])
s2 = set([4, 5, 6, 7, 8])
s3 = {1, 2, 3, 4, 5}
if s1 == s2:
print("s1과 s2은 같습니다.")
else:
print("s1과 s2은 다릅니다.")
if s1 == s3:
print("s1과 s3은 같습니다.")
else:
print("s1과 s3은 다릅니다.")
s1 = set([1, 2, 3, 4, 5])
s2 = set([4, 5, 6, 7, 8])
s3 = {1, 2, 3, 4, 5}
s4 = {6, 7, 8, 9, 10}
if s1.isdisjoint(s2):
print("s1과 s2은 같은 요소가 하나도 없습니다.")
else:
print("s1과 s2은 같은 요소가 적어도 하나는 있습니다.")
if s1.isdisjoint(s3):
print("s1과 s3은 같은 요소가 하나도 없습니다.")
else:
print("s1과 s3은 같은 요소가 적어도 하나는 있습니다.")
if s1.isdisjoint(s4):
print("s1과 s4은 같은 요소가 하나도 없습니다.")
else:
print("s1과 s4은 같은 요소가 적어도 하나는 있습니다.")
if s1 != s4:
print("s1과 s4은 같은 요소가 하나도 없습니다.")
else:
print("s1과 s4은 같은 요소가 적어도 하나는 있습니다.")
==>
s1과 s2는 같은 요소가 적어도 하나는 있습니다.
s1과 s3은 같은 요소가 적어도 하나는 있습니다.
s1과 s4은 같은 요소가 하나도 없습니다.
s1과 s4은 같은 요소가 하나도 없습니다.
isdisjoint 메소드 와 != 연산자로 한다.하나도! 없다. 를 의미한다.s1 = {1,2,3,4}
s2 = {3,4}
s3 = s1.issubset(s2)
print('부분집합' ,s3)
s3 = s2.issubset(s1)
print('부분집합',s3)
=>
부분집합 False
부분집합 True
s1 = {1,2,3,4}
s2 = {3,4}
s3 = s1.issuperset(s2)
print('상위집합' ,s3)
s3 = s2.issuperset(s1)
print('상위집합',s3)
=>
부분집합 True
부분집합 False
s = {1, 2, 3}
print(f'set : {s}')
s.add('blockdmask')
print(f'set : {s}')
s.add('blockdmask') # 중복 값
print(f'set : {s}')
s.add(4)
print(f'set : {s}')
==>
set : {1,2,3}
set : {1,2,3,'blockmask'}
set : {1,2,3,'blockmask'}
set : {1,2,3,'blockmask',4}
s = {1, 2, 3}
print(f'set : {s}')
s.update({'a', 'b', 'c'})
print(f'set : {s}')
s.update([11, 12, 13])
print(f'set : {s}')
==>
set : {1,2,3}
set : {1,2,3,'b','c','a'}
set : {1,2,3,'b',11,13,'c','a',12}
s = {'kim', 'lee', 'park', 2, 3, 4}
print(f'집합 : {s}')
s.remove("kim")
print(f'집합 : {s}')
# 에러 발생
# s.remove("kim")
# print(f'집합 : {s}')
==>
집합 : {2,3,4, 'lee', 'kim', 'park'}
집합 : {2,3,4, 'lee', 'park'}
s = {'kim', 'lee', 'park', 2, 3, 4}
print(f'집합 : {s}')
s.discard("lee")
print(f'집합 : {s}')
s.discard("lee")
print(f'집합 : {s}')
==>
집합 : {'park', 2, 3, 4, 'lee', 'kim'}
집합 : {'park', 2, 3, 4, 'kim'}
집합 : {'park', 2, 3, 4, 'kim'}
s = {'r', 'a', 'n', 'd', 'o', 'm'}
print(f'집합 : {s}')
print(f'집합.pop() : {s.pop()}')
print(f'집합 : {s}')
print(f'집합.pop() : {s.pop()}')
print(f'집합 : {s}')
print(f'집합.pop() : {s.pop()}')
print(f'집합 : {s}')
print(f'집합.pop() : {s.pop()}')
print(f'집합 : {s}')
print(f'집합.pop() : {s.pop()}')
print(f'집합 : {s}')
print(f'집합.pop() : {s.pop()}')
print(f'집합 : {s}')
# 이미 비어있는 집합 이므로 pop 불가. error 발생.
# print(f'집합.pop : {s.pop()}')
# print(f'집합 : {s}')
==>
집합 : {'a', 'm', 'r', 'n', 'd', 'o'}
집합.pop() : a
집합 : {'m', 'r', 'n', 'd', 'o'}
집합.pop() : m
집합 : {'r', 'n', 'd', 'o'}
집합.pop() : r
집합 : {'n', 'd', 'o'}
집합.pop() : n
집합 : {'d', 'o'}
집합.pop() : d
집합 : {'o'}
집합.pop() : o
집합 : set()
s = {'e', 'f', 'g', 11, 12, 13}
print(f'집합 s : {s}')
s.clear()
print(f'clear 후 집합 : {s}')
==>
집합 s : {'e', 'f', 'g', 11, 12, 13}
clear 후 집합 : set()