카테고리 없음

Set 자료형

멍주다배 2024. 12. 3.

collection data types_Set 

컬렉션 자료형(Collection Data Types)

더보기

여러 개의 데이터를 하나의 변수에 그룹화하여 저장하고 효율적으로 관리하는 데 사용되는 자료형입니다.

일반적으로 리스트, 튜플, 딕셔너리, 세트가 있습니다.

 

Dictionary 자료형

collection data types_Dictionary컬렉션 자료형(Collection Data Types)더보기여러 개의 데이터를 하나의 변수에 그룹화하여 저장하고 효율적으로 관리하는 데 사용되는 자료형입니다.일반적으로 리스트, 튜

minjung405.tistory.com

 

 

List 자료형

collection data types_List 컬렉션 자료형(Collection Data Types)더보기여러 개의 데이터를 하나의 변수에 그룹화하여 저장하고 효율적으로 관리하는 데 사용되는 자료형입니다.일반적으로 리스트, 튜플,

minjung405.tistory.com

 

세트(Set)

중복이 없는 유일한 요소들로 구성된 집합 형태의 자료형입니다.

파이썬에서 중괄호({})로 표현하며, 순서가 없고 중복을 허용하지 않습니다.

중복 요소를 제거하거나, 집합 연산(교집합, 합집합, 차집합 등)을 수행할 때 주로 사용합니다.

사용 예시: 고유한 태그 집합, 사용자 ID 

  • set(): 세트 생성
#세트 생성 (요소로 mutable한 값은 가질 수 없음)
nums = {1, 2, 3, 4, 4, 5}  #중복된 요소는 자동으로 중복 제거

print(nums)
#결과: {1, 2, 3, 4, 5}

#빈 세트 생성
s = set()

type(s)
#결과: set
for i in {1, 3, 5, 27, 38, 4}:
  print(i)

#순서 없이 출력
#결과:
#1
#3
#4
#5
#38
#27
  • add(): 세트 요소 추가
#nums = {1, 2, 3, 4, 4, 5}
nums.add(6)

print(nums)
#결과: {1, 2, 3, 4, 5, 6}
  • update(): 여러 요소 추가 (중복이 자동으로 제거되기 때문에 수정보다는 추가할 때 사용)
n = {1, 2, 3}
n.update([3, 4, 5])

print(n)
#결과: {1, 2, 3, 4, 5}
  • remove(): 세트 요소 제거
nums = {1, 2, 3, 4, 4, 5}
nums.remove(5)		#제거할 원소가 세트에 없으면 KeyError
#nums.discard(5)	#제거할 원소가 없어도 에러 발생하지 않음

print(nums)
#결과: {1, 2, 3, 4, 6}

집합 연산자

  • 합집합(|), 교집합(&), 차집합(-)
a = {1,2,3,4,5}
b = {2,4,6}

#합집합 연산자 사용
u = a | b

#교집합 연산자 사용
i = a & b

#차집합 연산자 사용
d1 = a - b
d2 = b - a

print("합집합:", u)
print("교집합:", i)
print("차집합(a-b):", d1)
print("차집합(b-a):", d2)

#결과
#합집합: {1, 2, 3, 4, 5, 6}
#교집합: {2, 4}
#차집합(a-b): {1, 3, 5}
#차집합(b-a): {6}
  • |=, &=, -=, ^=: 연산과 할당 동시에 하기
a = {1,2,3,4,5}
b = {2,4,6}
c = {1,3,5,7}
d = {1,5}

a |= b
print(a)

c &= d
print(c)

#결과:
#{1, 2, 3, 4, 5, 6}
#{1, 5}

집합 연산메소드

  • union(): 합집합
a = {1, 2, 3, 4, 5}
b = {2, 4, 6, 8}

c = a.union(b)

print(c)
#결과: {1, 2, 3, 4, 5, 6, 8}
  • intersection(): 교집합
a = {1, 2, 3, 4, 5}
b = {2, 4, 6, 8}

c = a.intersection(b)

print(c)

print(c)
#결과: {2, 4}
  • difference(): 차집합
a = {1, 2, 3, 4, 5}
b = {2, 4, 6, 8}

c = a.difference(b)

print(c)
#결과: {1, 3, 5}
  • issubset(): 부분집합 여부 확인
a = {1, 2, 3, 4, 5}
b = {2, 4}

print(a.issubset(b))
print(b.issubset(a))

#결과:
#False
#True
  • isdisjoint(): 교집합이 없으면 True, 있으면 False
a = {1, 2, 3, 4, 5}
b = {2, 4, 6, 8}

print(a.isdisjoint(b))
print(b.isdisjoint(a))

#결과:
#False
#False

a = {1, 2, 3, 4, 5}
b = {6, 8}

print(a.isdisjoint(b))
print(b.isdisjoint(a))

#결과:
#True
#True

set comprehesions

리스트 표현식과 동일하게 사용되지만, 세트의 특징인 중복 값이 제거된다는 점은 다릅니다.

  • for문: {i for i in iterable}, for문 + if문: {i for i in iterable if 조건(i)}
sent = 'apple is a fruit, also pear is a fruit'

for_sent = {i for i in sent.split()}

for_if_sent = {i for i in sent if i in 'abcde'}

print(for_sent)
print(for_if_sent)

#결과:
#{'a', 'pear', 'fruit', 'fruit,', 'apple', 'is', 'also'}
#{'e', 'a'}