1.세트
- 집합 형태의 자료형
- {} 중괄호 안에 값을 저장하며 각 값은 콤마로 구분
- 세트는 대괄호로 특정 요소를 출력할 수 없음
- 세트는 요소의 순서가 정해져 있지 않아서 출력해보면 - 매번 요소의 순서가 다름
- 세트는 리스트, 딕셔너리와 달리 세트 안에 스트를 넣을 수 없다
세트 = {값1, 값2, 값3} # 세트 만들기
세트 = set(반복가능한객체) # 세트 만들기
값 in 세트 # 세트에 특정 값이 있는지 확인
값 not in 세트 # 세트에 특정 값이 없는지 확인
len(세트) # 세트의 요소 개수(길이) 구하기
| 메소드 | 집합 연산자 | 설명 |
|---|
| set.union(세트1, 세트2) | | |
| set.intersection(세트1, 세트2) | & | 두 세트의 대칭차집합 |
| set.difference(세트1, 세트2) | ^ | 현재 세트에 다른 세트를 더함 |
| set.symmetric_difference(세트1, 세트2) | | = |
| update(다른세트) | - | 현재 세트에서 다른 세트를 뺌 |
| intersection_update(다른세트) | &= | 현재 세트와 다른 세트 중에서 겹치지 않는 요소만 현재 세트에 저장 |
| difference_update(다른세트) | -= | 현재 세트가 다른 세트의 부분집합인지 확인 |
| sysmmetric_difference_update(다른세트) | ^= | 현재 세트가 다른 세트와 진부분집합인지 확인 |
| issubest(다른세트) | <, <= | 현재 세트가 다른 세트의 상위집합인지 확인 |
| issuperset(다른세트) | >, >= | 현재 세트가 다른 세트의 진상위집합인지 확인 |
| isdisjoint(다른세트) | | 현재 세트가 다른 세트와 겹치지 않는지 확인 |
| add(요소) | | 세트에 요소를 추가 |
| remove(요소) | | 세트에서 특정 요소를 삭제, 없으면 에러 발생 |
| discard(요소) | | 세트에서 특정 요소를 삭제, 요소가 없으면 그냥 넘어감 |
| pop() | | 세트에서 임의의 요소를 삭제하고 해당 요소를 반환 |
| clear() | | 세트에서 모든 요소를 삭제 |
| copy() | | 세트를 복사하여 새로운 세트 생성 |
2.세트 만들기
세트 = {값1, 값2, 값3}
fruits = {'strawberry', 'grape', 'orange', 'pineapple', 'cherry'}
fruits
2-1.한글 문자열을 세트로 만들기
set("안녕하세요")
2-2.세트에 특정 값이 있는지 확인하기
값 in 세트
값 not in 세트
fruits = {'strawberry', 'grape', 'orange', 'pineapple', 'cherry'}
'orange' in fruits # 세트에 특정 값 있는지 확인
'peach' not in fruits
2-3.set을 사용하여 세트 만들기
set(반복가능한객체)
a = set("apple')
3.집합 연산 사용하기
3-1.| 연산자 (union)
세트1 | 세트2
set.union(세트1, 세트2)
3-2.& 연산자 (intersection)
세트1 & 세트2
set.intersection(세트1,세트2)
3-3.- 연산자 (difference)
세트1 - 세트2
set.difference(a,b)
3-4.^ 연산자 (symmetric_difference)
세트1 ^ 세트2
set.symmetric_difference(세트1, 세트2)
4.집합 연산 후 할당 연산자 사용하기
4-1.|= &= -= ^=연산자 (update)
세트1 |= 세트2
세트1.update(세트2)
세트1 &= 세트2
세트1.intersection_update(세트2)
세트1 -= 세트2
세트1.difference_update(세트2)
세트1 ^= 세트2
세트1.symmetric_difference_update(세트2)
4-2.부분 집합과 상위집합 확인하기
- 세트는 부분집합, 진부분집합, 상위집합, 진상위집합과 같이 속하는 관계 표현 가능 세트 자료형에는 부등호화 등호 사용
현재세트 <= 다른세트
현재세트.issubest(다른세트)
현재세트 < 다른세트
현재세트 >= 다른세트
현재세트.issubest(다른세트)
현재세트 > 다른세트
4-3.세트가 같은지 다른지 확인하기
- 세트는 == 연산자를 사용해 서로 같은지 확인
- 세트는 요소의 순서가 정해져 있지 않으므로 각 요소만 같으면 참
a = {1,2,3,4}
a == {1,2,3,4}
a != {1,2,3}
4-4.세트가 겹치지 않는지 확인하기
a = {1,2,3,4}
a.isdisjoint({5,6,7,8}) # 겹치는 요소가 없음
a.isdisjoint({3,4,5,6}) # a와 3, 4가 겹침
5.세트 조작하기
5-1.세트에 요소를 추가하기 add()
a = {1,2,3,4}
a.add(5)
5-2.세트에서 특정 요소를 삭제하기 remove() discard()
a.remove(3) # 특정 요소를 삭제하고 요소가 없으면 에러 발생
a.discard(3) # 특정 요소를 삭제하고 요소가 없으면 그냥 넘어감
5-3.세트에서 임의의 요소를 삭제하기 pop()
a = {1,2,3,4}
a.pop()
5-4.세트의 모든 요소를 삭제하기 clear()
a.clear()
5-5.세트의 요소 개수 구하기 len()
a = {1,2,3,4}
len(a)
6.세트의 할당과 복사
- 세트를 만든 뒤 다른 변수에 할당
- 세트를 다른 변수에 할당하면 세트는 한 개이고 같은 객체
- 값을 비교할 때는 ==
a = {1,2,3,4}
b = a
a == b
7.반복문으로 세트의 요소를 모두 출력하기
for 변수 in 세트:
반복할 코드
# 세트 a의 요소 출력
a = {1,2,3,4}
for i in a:
print(i)
8.세트 컴프리헨션 사용하기
{식 for 변수 in 반복가능한객체}
set(식 for 변수 in 반복가능한객체)
a = {i for i in 'apple'}
8-1.세트 컴프리헨션에 if 조건문 사용하기
{식 for 변수 in 세트 if 조건식}
set(식 for 변수 in 세트 if 조건식)
a = {i for i in 'pineapple' if i not in 'apl'}