[파이썬] set

set이란?

set이란 여러 개의 데이터를 저장할 때 사용하는 하나의 자료구조입니다.

set 특징

  1. 하나의 자료구조이다.
  2. set은 집합개념(수학)의 구조이다.
  3. 저장된 요소 사이에 순서가 없다. (인덱스(index)가 없다.)
  4. 동일한 요소를 2개 이상 저장할 수 없다. (중복하는 데이터가 없을 때 사용하면 좋다.)
  5. 실행 순서를 보장하지 않는다.

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 여러 가지 사용 방법

  1. set 추가
  • add(): 하나의 값을 추가할 때 사용
menus = {'김밥', '떡볶이', '순대'}  # set을 생성

menus.add('라면')  # set에 '라면'을 추가

print(menus)  # 출력 값: {'떡볶이', '순대', '라면', '김밥'}
  • update(): 여러개의 값을 추가할 때 사용
menus = {'김밥', '떡볶이', '순대'}  # set을 생성
menus.update(['라면', '오뎅', '튀김'])  # set에 '라면', '오뎅', '튀김'을 추가
print(menus)  # 출력 값: {'순대', '떡볶이', '라면', '김밥', '오뎅', '튀김'}

update()함수를 사용할 때 주의할 점은 그냥 update() 이렇게 사용하면 소괄호()이기 때문에 문자열에 문자를 하나씩 set에 추가하게 됩니다.

예시) 
menus = {'김밥', '떡볶이', '순대'}
menus.update('라면', '오뎅', '튀김')
print(menus)  # 출력 값: {'튀', '떡볶이', '뎅', '라', '면', '김밥', '오', '김', '순대'}

그렇기 때문에 문자열을 set에 저장하고자 할때는 소괄호() 안에 대괄호[]를 사용해야 합니다.

  1. 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()을 출력
  1. 집합 연산
  • 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을 알아봤습니다. 잘못된 부분이나 부족한 부분이 있다면 피드백 주시면 감사하겠습니다!!!

좋은 웹페이지 즐겨찾기