Python: 자료형 세트 (set)
set
- 집합을 표현한다.
- 합집합, 교집합, 차집합 등의 연산이 가능하다.
- 세트는 중복 값을 허용하지 않는다.
- 순서가 보장되지 않는다. 출력하면 매번 요소가 다른 순서로 나온다.
- 순서가 보장되지 않기 때문에, 인덱스가 존재하지 않는다.
- 리스트, 튜플, 딕셔너리와 달리
[]
로 특정 요소만 출력할 수 없다.
- 세트에 특정 값이 있는지 확인하기 위해서는
in
연산자를 사용한다.
세트 만들기
- {}(중괄호) 안에 값을 저장하며, 각 값은 ,(쉼표)로 구분해준다.
set_t1 = {}
set_t2 = set([iterable])
mamamoo = {"솔라", "휘인", "화사", "문별", "제니"}
a = set('apple')
# {'e', 'l', 'a', 'p'}
- 세트는
{}
를 사용하지만, 초기값으로 {}
를 사용하면 dictionary가 되므로 주의해야 한다.
- set() 함수를 사용해서 set 를 만들기 위해서는 list 를 파라미터로 넘겨야한다.
특정 값 존재 확인
mamamoo = {"솔라", "휘인", "화사", "문별", "제니"}
if "솔라" in mamamoo:
print("yes")
# 결과 값은 True, False
if "사나" not in mamamoo:
print("yes")
# not in 연산자 사용하여 특정 값이 없는지 확인
set in set
- 세트는 다른 자료형(list, dictionary, tuple)과 같이 세트 안에 세트를 넣을 수 없다.
frozen set (프로즌 세트)
[]
로 특정 요소만 출력할 수 없다.in
연산자를 사용한다.set_t1 = {}
set_t2 = set([iterable])
mamamoo = {"솔라", "휘인", "화사", "문별", "제니"}
a = set('apple')
# {'e', 'l', 'a', 'p'}
{}
를 사용하지만, 초기값으로 {}
를 사용하면 dictionary가 되므로 주의해야 한다.mamamoo = {"솔라", "휘인", "화사", "문별", "제니"}
if "솔라" in mamamoo:
print("yes")
# 결과 값은 True, False
if "사나" not in mamamoo:
print("yes")
# not in 연산자 사용하여 특정 값이 없는지 확인
업데이트 예정
세트 연산
합집합
- 세트1 | 세트2
- set.union(세트1, 세트2)
m = {"솔라", "휘인", "화사", "문별", "제니"}
t = set(["솔라", "휘인", "제니"])
print(m | t)
print(m.union(t))
# 실행 결과
{'화사', '제니', '솔라', '휘인', '문별'}
{'화사', '제니', '솔라', '휘인', '문별'}
교집합
- 세트1 & 세트2
- set.intersection(세트1, 세트2)
m = {"솔라", "휘인", "화사", "문별", "제니"}
t = set(["솔라", "휘인", "제니"])
print(m & t)
print(m.intersection(t))
# 실행 결과
{'휘인', '제니', '솔라'}
{'휘인', '제니', '솔라'}
차집합
- 세트1 - 세트2
- set.difference(세트1, 세트2)
m = {"솔라", "휘인", "화사", "문별", "제니"}
t = set(["솔라", "휘인", "제니"])
print(m - t)
print(m.difference(t))
# 실행 결과
{'문별', '화사'}
{'문별', '화사'}
대차집합
- 세트1 ^ 세트2
- set.symmetric_difference(세트1, 세트2)
두 집합 중 겹치지 않은 요소만 포함한다.
m = {"솔라", "휘인", "화사", "문별", "제니"}
t = set(["솔라", "휘인", "제니", "로제"])
print(m - t)
print(m.difference(t))
# 실행 결과
{'문별', '화사', '로제'}
{'문별', '화사', '로제'}
집합 연산 후 할당 연산자 사용
집합 연순 후 할당 연산자 =
를 사용하여 결과를 변수에 할당한다.
연산식 | 메서드 |
---|---|
세트1 |= 세트2 | 세트1.update(세트2) |
세트1 \&= 세트2 | 세트1.intersection_update(세트2) |
세트1 -= 세트2 | 세트1.difference_update(세트2) |
세트1 \^= 세트2 | 세트1.symmetric_difference_update(세트2) |
부분집합과 상위집합 확인, 같은지 다른지 확인
연산의 결과는 Boolean
으로 나온다.
연산식 | 메서드 | 설명 |
---|---|---|
현재세트 <= 다른세트 | 현재세트.issubset(다른세트) | 현재 세트가 다른 세트의 부분 집합인지 |
현재세트 < 다른세트 | (메서드 없음) | 진부분집합인지 확인 |
현재세트 >= 다른세트 | 현재세트.issuperset(다른세트) | 다른 세트의 상위 집합인지 확이 |
현재세트 > 다른세트 | (메서드 없음) | 현재 세트가 다른 세트의 진상위집합인지 확인 |
현재세트 == 다른세트 | (메서드 없음) | 같으면 True, 다르면 False. 순서가 없으므로 요소만 같으면 참. |
현재세트 != 다른세트 | (메서드 없음) | 같으면 True, 다르면 False. 순서가 없으므로 요소가 다르면 참. |
(연산식 없음) | 현재세트.isdisjoint(다른세트) | 현재 세트가 다른 세트와 겹치지 않는지 확인 |
세트 조작하기
-
add(x)
세트에 요소를 추가한다. -
remove(x)
세트에서 특정 요소를 삭제하고 요소가 없으면 에러를 발생시킨다. -
discard(x)
세트에서 특정 요소를 삭제하고, 요소가 없으면 그냥 넘어간다. -
pop()
세트에서 임의의 요소를 삭제하고 해당 요소를 반환한다. 요소가 없다면 에러를 발생시킨다. -
clear()
세트에서 모든 요소를 삭제한다. -
len(set_variable)
세트의 길이를 구한다. -
copy(set)
기존의 세트를 복사하여 새로운 세트를 만든다.
세트 표현식
- {식 for 변수 in 반복가능한객체}
- set(식 for 변수 in 반복가능한객체)
- {식 for 변수 in 세트 if 조건식}
- set(식 for 변수 in 세트 if 조건식)
--업데이트
Author And Source
이 문제에 관하여(Python: 자료형 세트 (set)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pm1100tm/Python-자료형-세트-set저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)