[파이썬] set
set이란?
set이란 여러 개의 데이터를 저장할 때 사용하는 하나의 자료구조입니다.
set 특징
- 하나의 자료구조이다.
- set은 집합개념(수학)의 구조이다.
- 저장된 요소 사이에 순서가 없다. (인덱스(index)가 없다.)
- 동일한 요소를 2개 이상 저장할 수 없다. (중복하는 데이터가 없을 때 사용하면 좋다.)
- 실행 순서를 보장하지 않는다.
set 사용 방법
set명 = 중괄호{값, 값, 값....}
menus1 = {'김밥', '떡볶이', '순대'}
menus2 = set(['김밥', '떡볶이', '순대'])
menus3 = set({'김밥', '떡볶이', '순대'})
menus4 = set('떡볶이')
print(menus1) # 출력 값: {'김밥', '순대', '떡볶이'}
print(menus2) # 출력 값: {'김밥', '순대', '떡볶이'}
print(menus3) # 출력 값: {'김밥', '순대', '떡볶이'}
print(menus4) # 출력 값:{'떡', '이', '볶'}
menus1, menus2, menus3 방법 중 아무거나 사용해도 됩니다.
menus4처럼 소괄호()만사용하게 되면 문자열을 문자 하나씩 set에 저장하게 됩니다.
set 주의사항
- set의 실행 순서는 보장하지 않는다.(즉 출력할 때 순서는 매번 다릅니다.)
- set은 동일한 요소를 2개 이상 저장할 수 없다.
menus = {'김밥', '떡볶이', '순대', '순대', '떡볶이'} #떡볶이, 순대는 중복된 이름이 있다.
print(menus) # 출력 값: {'김밥', '순대', '떡볶이'} 중복된 이름은 하나만 출력된다.
만약 set에 중복된 값이 있다면 중복된 값 중에 하나만 출력됩니다.
set 여러 가지 사용 방법
- set 추가
- add(): 하나의 값을 추가할 때 사용
menus = {'김밥', '떡볶이', '순대'} # set을 생성
menus.add('라면') # set에 '라면'을 추가
print(menus) # 출력 값: {'떡볶이', '순대', '라면', '김밥'}
- update(): 여러개의 값을 추가할 때 사용
menus = {'김밥', '떡볶이', '순대'} # set을 생성
menus.update(['라면', '오뎅', '튀김']) # set에 '라면', '오뎅', '튀김'을 추가
print(menus) # 출력 값: {'순대', '떡볶이', '라면', '김밥', '오뎅', '튀김'}
menus = {'김밥', '떡볶이', '순대'} # set을 생성
menus.add('라면') # set에 '라면'을 추가
print(menus) # 출력 값: {'떡볶이', '순대', '라면', '김밥'}
menus = {'김밥', '떡볶이', '순대'} # set을 생성
menus.update(['라면', '오뎅', '튀김']) # set에 '라면', '오뎅', '튀김'을 추가
print(menus) # 출력 값: {'순대', '떡볶이', '라면', '김밥', '오뎅', '튀김'}
update()함수를 사용할 때 주의할 점은 그냥 update() 이렇게 사용하면 소괄호()이기 때문에 문자열에 문자를 하나씩 set에 추가하게 됩니다.
예시)
menus = {'김밥', '떡볶이', '순대'}
menus.update('라면', '오뎅', '튀김')
print(menus) # 출력 값: {'튀', '떡볶이', '뎅', '라', '면', '김밥', '오', '김', '순대'}
그렇기 때문에 문자열을 set에 저장하고자 할때는 소괄호() 안에 대괄호[]를 사용해야 합니다.
- set 삭제
- remove(): set에 해당 요소를 삭제합니다.
menus = {'김밥', '떡볶이', '순대'} # set을 생성
menus.remove('김밥') # 김밥을 삭제
print(menus) # 출력 값: {'순대', '떡볶이'}
- pop(): set에 임의의 값을 반환하고 삭제
menus = {'김밥', '떡볶이', '순대'} # set을 생성
val = menus.pop() # 임의의 값을 삭제하고 반환
print(val) # 출력 값: 삭제한 임의의 값
print(menus) # 출력 값: 삭제한 임의의 값을 제외한 값
- clear(): set에 모든 값을 삭제
menus = {'김밥', '떡볶이', '순대'} # set을 생성
menus.clear() # set에 모든 값 삭제
print(menus) # (아무값이 없기 때문에)set()을 출력
- 집합 연산
- union(): set 집합에 합집합을 연산.
a = {1,2,4,5}
b = {2,3,5,7}
c = a.union(b) # a와b를 합집합한 결과를 c에 반환
print(c) # 출력 값: {1, 2, 3, 4, 5, 7}
- intersection(): set 집합에 교집합을 연산.
a = {1,2,4,5}
b = {2,3,5,7}
c = a.intersection(b) # a와b를 교집합한 결과를 c에 반환
print(c) # 출력 값: {2, 5}
- difference(): set 집합에 차집합을 연산
a = {1,2,4,5}
b = {2,3,5,7}
c = a.difference(b) # a와b를 차집합한 결과를 c에 반환(a-b와 같다.)
print(c) # 출력 값: {1, 4}
이상으로 파이썬에 set을 알아봤습니다. 잘못된 부분이나 부족한 부분이 있다면 피드백 주시면 감사하겠습니다!!!
Author And Source
이 문제에 관하여([파이썬] set), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sunnamgung8/파이썬-set저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)