본문 바로가기
Programming/- Python

[Python] Set (집합) : 중복 없는 자료형

by 완벽주의탈피 2022. 5. 25.

 

중복되지 않는 자료형을 원할 때 사용하는 set

중복을 허용하지 않고, 순서가 없기 때문에 집합에 관한 것을 처리할 때 유용하다.

 

 


 

 

set (집합 자료형)


  • myset = set() 으로 선언
  • 중복된 값을 허용하지 않으므로 순서가 없음 --> 인덱싱 불가능

 

myset1 = set([1, 2, 2, 3)]
myset2 = set('hello')

print(myset1)	# {1, 2, 3}
print(myset2)	# {h, e, l, o}

 

중복된 값이 없으므로 원소의 종류 개수를 세거나 일부러 중복을 피하는 경우 유용하게 쓸 수 있다.

또한 정말 집합 그 자체이므로 순서가 없어 인덱싱이 필요할 땐 리스트 또는 튜플로의 변환이 필요하다.

 

 

집합 연산 1) 교집합


  • & / set.intersection(set) 으로 사용
  • 두 집합의 공통된 원소를 반환

 

myset1 = set([1, 2, 3, 4, 5])
myset2 = set([4, 5, 6, 7, 8])

print(myset1 & myset2)			# {4, 5}
print(myset1.intersection(myset2))	# {4, 5}
print(myset2.intersection(myset1))	# {4, 5}

 

실제 집합에서의 연산과 마찬가지로 두 가지 방법 모두 동일한 결과

 

 

집합 연산 2) 합집합


  • | / set.union(set) 으로 사용
  • 두 집합의 모든 원소를 반환

 

myset1 = set([1, 2, 3, 4, 5])
myset2 = set([4, 5, 6, 7, 8])

print(myset1 | myset2)		# {1, 2, 3, 4, 5, 6, 7, 8}
print(myset1.union(myset2))	# {1, 2, 3, 4, 5, 6, 7, 8}
print(myset2.union(myset1))	# {1, 2, 3, 4, 5, 6, 7, 8}

 

실제 집합에서의 연산과 마찬가지로 두 가지 방법 모두 동일한 결과

 

 

집합 연산 3) 차집합


  • - / set.difference(set) 으로 사용
  • 두 집합의 모든 원소를 반환

 

myset1 = set([1, 2, 3, 4, 5])
myset2 = set([4, 5, 6, 7, 8])

print(myset1 - myset2)			# {1, 2, 3}
print(myset2 - myset1)			# {6, 7, 8}
print(myset1.difference(myset2))	# {1, 2, 3}
print(myset2.difference(myset1))	# {6, 7, 8}

 

실제 집합에서의 연산과 마찬가지로 순서에 따라 결과가 다름

 

 

집합 연산 4) 대칭 차집합


  • ^ / set.symmetric_difference(set) 으로 사용
  • 두 집합의 합집합 - 교집합

 

myset1 = set([1, 2, 3, 4, 5])
myset2 = set([4, 5, 6, 7, 8])

print(myset1 ^ myset2)				# {1, 2, 3, 6, 7, 8}
print(myset1.symmetric_difference(myset2))	# {1, 2, 3, 6, 7, 8}
print(myset2.symmetric_difference(myset1))	# {1, 2, 3, 6, 7, 8}

 

실제 집합에서의 연산과 마찬가지로 두 가지 방법 모두 동일한 결과

 

 

관련 함수 1) add


  • set.add(n) 으로 사용
  • 원소 한 개를 추가할 때 사용

 

myset = set([1, 2, 3])
myset.add(4)

print(myset)			# {1, 2, 3, 4}

 

 

관련 함수 2) update


  • set.update([n1, n2, n3]) 으로 사용
  • 원소 여러 개를 추가할 때 사용

 

myset = set([1, 2, 3])
myset.update([4, 5, 6])

print(myset)			# {1, 2, 3, 4, 5, 6}

 

 

관련 함수 3) remove / discard


  • set.remove(n) / set.discard(n) 으로 사용
  • 원소를 삭제할 때 사용
  • remove : 원소가 없다면 Key Error 발생
  • discard : 원소가 없어도 Key Error 발생 X

 

myset = set([1, 2, 3])
myset.remove([4])		# Key Error
myset.discard([4])		# Key Error X

print(myset)			# {1, 2}

 

댓글