[세트(집합) 사용하기]
1)만들기
요소 중복X
특정 요소만 출력X (인덱스 사용불가)
세트 안에 세트 넣기는 불가능
frozenset안에 frozenset넣기 가능
세트 = {값1, 값2, 값3}
2) 특정 값 있는지 확인
값 in 세트
3) 특정 값 없는지 확인
값 not in 세트
4) set를 사용하여 세트 만들기
set(반복가능한객체)
a = set('apple') # 유일한 문자만 세트로 만듦
a
{'e', 'l', 'a', 'p'}
b = set(range(5))
b
{0, 1, 2, 3, 4}
c = set()
c
set()
5) 합집합(OR)
세트1 | 세트2
set.union(세트1, 세트2)
6) 교집합(AND)
세트1 & 세트2
set.intersection(세트1, 세트2)
7) 차집합(-)
세트1 - 세트2
set.difference(세트1, 세트2)
8)대칭 차집합(xor)
세트1 ^ 세트2
set.symmetric_difference(세트1, 세트2)
9)집합 연산 후 할당 연산자 사용
세트 자료형에 |, &, -, ^ 연산자와 할당 연산자 =을
함께 사용하면 집합 연산의 결과를 변수에
다시 저장(할당)합니다.
10) 부분 집합과 상위집합 확인하기
현재세트 <= 다른세트
현재세트.issubset(다른세트)
i)진부분집합
현재세트 < 다른세트
ii)상위집합
현재세트 >= 다른세트
현재세트.issuperset(다른세트)
iii)진상위집합
현재세트 > 다른세트
11)세트가 겹쳐있는지 확인
현재세트.isdisjoint(다른세트)
True-겹치는 요소가 없음/False-겹치는 요소가 있음
12)세트에 요소 추가
add(요소)
a = {1, 2, 3, 4}
a.add(5)
a
{1, 2, 3, 4, 5}
13)세트에 요소 삭제
i)
remove(요소)
a.remove(3)
a
{1, 2, 4, 5}
ii)
discard(요소)
-요소가 있으면 삭제 없으면 넘어감
a.discard(2)
a
{1, 4, 5}
a.discard(3)
a
{1, 4, 5}
iii)
pop(요소)
-임의의 요소 삭제
a = {1, 2, 3, 4}
a.pop()
1
a
{2, 3, 4}
iv)
clear()
-세트에서 모든 요소 삭제
a.clear()
a
set()
14)세트의 요소 개수 구하기
a = {1, 2, 3, 4}
len(a)
4
15)할당과 복사
세트 a와 b는 별개이므로 한쪽의 값을 변경해도
다른 세트에 영향을 미치지 않습니다.
다음과 같이 세트 b에 요소를 추가하면
세트 a는 그대로이고 세트 b만 바뀝니다.
a = {1, 2, 3, 4}
b = a.copy()
b.add(5)
a
{1, 2, 3, 4}
b
{1, 2, 3, 4, 5}
16)반복문으로 세트의 요소 모두 출력
세트= {값1,값2,값3,...}
for 변수 in 세트:
반복할 코드
17)세트 표현식 사용하기
+)
세트 = {식 for 변수 in 반복가능한객체}
a = {i for i in 'apple'}
a
{'l', 'p', 'e', 'a'}
set(식 for 변수 in 반복가능한객체)
18)세트 표현식에 if 조건문 사용
{식 for 변수 in 세트 if 조건식}
a = {i for i in 'pineapple' if i not in 'apl'}
a
{'e', 'i', 'n'}
set(식 for 변수 in 세트 if 조건식)
set('안녕하세요')
{'녕', '요', '안', '세', '하'}
프로즌세트 = frozenset(반복가능한객체)
a = frozenset(range(10))
a
frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
A,B = map(int,input().split())
a = {i for i in range(1, A+1) if A%i==0}
b = {i for i in range(1, B+1) if B%i==0}