set이란 여러 개의 데이터를 저장할 때 사용하는 하나의 자료구조입니다.
set명 = 중괄호{값, 값, 값....}
menus1 = {'김밥', '떡볶이', '순대'}
menus2 = set(['김밥', '떡볶이', '순대'])
menus3 = set({'김밥', '떡볶이', '순대'})
menus4 = set('떡볶이')
print(menus1) # 출력 값: {'김밥', '순대', '떡볶이'}
print(menus2) # 출력 값: {'김밥', '순대', '떡볶이'}
print(menus3) # 출력 값: {'김밥', '순대', '떡볶이'}
print(menus4) # 출력 값:{'떡', '이', '볶'}
menus1, menus2, menus3 방법 중 아무거나 사용해도 됩니다.
menus4처럼 소괄호()만사용하게 되면 문자열을 문자 하나씩 set에 저장하게 됩니다.
menus = {'김밥', '떡볶이', '순대', '순대', '떡볶이'} #떡볶이, 순대는 중복된 이름이 있다.
print(menus) # 출력 값: {'김밥', '순대', '떡볶이'} 중복된 이름은 하나만 출력된다.
만약 set에 중복된 값이 있다면 중복된 값 중에 하나만 출력됩니다.
menus = {'김밥', '떡볶이', '순대'} # set을 생성
menus.add('라면') # set에 '라면'을 추가
print(menus) # 출력 값: {'떡볶이', '순대', '라면', '김밥'}
menus = {'김밥', '떡볶이', '순대'} # set을 생성
menus.update(['라면', '오뎅', '튀김']) # set에 '라면', '오뎅', '튀김'을 추가
print(menus) # 출력 값: {'순대', '떡볶이', '라면', '김밥', '오뎅', '튀김'}
update()함수를 사용할 때 주의할 점은 그냥 update() 이렇게 사용하면 소괄호()이기 때문에 문자열에 문자를 하나씩 set에 추가하게 됩니다.
예시)
menus = {'김밥', '떡볶이', '순대'}
menus.update('라면', '오뎅', '튀김')
print(menus) # 출력 값: {'튀', '떡볶이', '뎅', '라', '면', '김밥', '오', '김', '순대'}
그렇기 때문에 문자열을 set에 저장하고자 할때는 소괄호() 안에 대괄호[]를 사용해야 합니다.
menus = {'김밥', '떡볶이', '순대'} # set을 생성
menus.remove('김밥') # 김밥을 삭제
print(menus) # 출력 값: {'순대', '떡볶이'}
menus = {'김밥', '떡볶이', '순대'} # set을 생성
val = menus.pop() # 임의의 값을 삭제하고 반환
print(val) # 출력 값: 삭제한 임의의 값
print(menus) # 출력 값: 삭제한 임의의 값을 제외한 값
menus = {'김밥', '떡볶이', '순대'} # set을 생성
menus.clear() # set에 모든 값 삭제
print(menus) # (아무값이 없기 때문에)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}
a = {1,2,4,5}
b = {2,3,5,7}
c = a.intersection(b) # a와b를 교집합한 결과를 c에 반환
print(c) # 출력 값: {2, 5}
a = {1,2,4,5}
b = {2,3,5,7}
c = a.difference(b) # a와b를 차집합한 결과를 c에 반환(a-b와 같다.)
print(c) # 출력 값: {1, 4}
이상으로 파이썬에 set을 알아봤습니다. 잘못된 부분이나 부족한 부분이 있다면 피드백 주시면 감사하겠습니다!!!