본문 바로가기
Python

Python - 기초 자료형(집합)

by DGK 2021. 10. 13.

 

인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

기초 자료형(집합)

 

  • 기본 개념
집합 자료형은 순서가 없고 중복을 허용하지 않지만, 수정 및 삭제가 가능한 자료형이다.
또한, 집합 자료형은 딕셔너리와 형태가 유사하지만, 키 없이 벨류만으로 이루어져있다. 

# 선언 방식

a = set()
print(type(a))	# 결과 : <class 'set'>

b = set([1, 2, 3, 4, 4, 4])  
c = set([1, 2, 'pen', 'Cap', 'Plate'])  
d = {'abd', 'dwq', 'daf', 'ewe'}   
e = {42, 'abd', (1, 2, 3), 3.42411}

# 집합의 선언 방식은 다양한데, ( )안에 리스트형식으로 데이터를 담아 선언할 수도 있고
# { }안에 키 없이 벨류만을 담아서 선언할 수도 있다.
# 또한, 집합안에는 서로 다른 자료형을 함께 담을 수 있다.




# 출력 방식

print('a - ', type(a), a)

# 결과 : a -  <class 'set'> set()


print('b - ', type(b), b)

# 결과 : b -  <class 'set'> {1, 2, 3, 4}
# 집합은 중복을 허용하지 않기 때문에, 중복된 데이터를 출력하지 않는다.
# 여기서는 데이터 4가 중복되기 때문에, 4를 한 번만 출력한다.


print('c - ', type(c), c)

# 결과 : c -  <class 'set'> {1, 2, 'pen', 'Plate', 'Cap'}


print('d - ', type(d), d)

# 결과 : d -  <class 'set'> {'dwq', 'abd', 'ewe', 'daf'}


print('e - ', type(e), e)

# 결과 : e -  <class 'set'> {42, 3.42411, 'abd', (1, 2, 3)}


print('a - ', type(a), a, 2 in a)

# 결과 : a -  <class 'set'> set() False
# in 연산자를 사용해서 집합 안에 특정 데이터가 존재하는지 여부를 알 수 있다.


print('b - ', type(b), b, 2 in b)

# 결과 : b -  <class 'set'> {1, 2, 3, 4} True
# in 연산자를 사용해서 집합 안에 특정 데이터가 존재하는지 여부를 알 수 있다.
# 집합도 튜플, 리스트, 딕셔너리에서 사용가능한 기능은 모두 사용할 수 있다.

 

 

  • 응용 개념
# 자료형 변환

t = tuple(b)
print('t - ', type(t), t)

# 결과 : t -  <class 'tuple'> (1, 2, 3, 4)


print('t - ', t[0], t[1:3])

# 결과 : t -  1 (2, 3)

# 이처럼 집합 자료형을 튜플 자료형으로 형 변환 할 수 있으며,
# 형 변환 이후에는 슬라이싱 기능을 사용하여 특정 데이터만 잘라내어 출력할 수 있다.



l = list(c)
l2 = list(e)

print('l - ', l)

# 결과 : l -  [1, 2, 'pen', 'Cap', 'Plate']

print('l2 - ', l2)

# 결과 : l2 -  ['abd', 3.42411, 42, (1, 2, 3)]

# 이처럼 집합 자료형을 리스트 자료형으로 형 변환 할 수 있다.




# 참고 예시

print(len(a))	# 결과 : 0
print(len(b))	# 결과 : 4
print(len(c))	# 결과 : 5
print(len(d))	# 결과 : 4
print(len(e))	# 결과 : 4

# 집합 자료형도 len( ) 함수를 사용하여 집합의 길이를 알 수 있다.




# 집합 자료형의 활용 예시(합집합, 교집합, 차집합)

s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])


print('s1 & s2 : ', s1 & s2)

# 결과 : s1 & s2 :  {4, 5, 6}
# &는 교집합을 의미하며, s1과 s2의 교집합을 집합 형태로 출력한다.


print('s1 & s2 : ', s1.intersection(s2))

# 결과 : s1 & s2 :  {4, 5, 6}
# intersection( ) 함수를 사용하면, 두 집합의 교집합을 출력할 수 있다.


print('s1 | s2 : ', s1 | s2)

# 결과 : s1 | s2 :  {1, 2, 3, 4, 5, 6, 7, 8, 9}
# |는 합집합을 의미하며, s1과 s2의 합집합을 집합 형태로 출력한다.


print('s1 | s2 : ', s1.union(s2))

# 결과 : s1 | s2 :  {1, 2, 3, 4, 5, 6, 7, 8, 9}
# union( ) 함수를 사용하면, 두 집합의 합집합을 출력할 수 있다.


print('s1 - s2 : ', s1 - s2)

# 결과 : s1 - s2 :  {1, 2, 3}
# -는 차집합을 의미하며, s1과 s2의 차집합을 집합 형태로 출력한다.


print('s1 - s2 : ', s1.difference(s2))

# 결과 : s1 - s2 :  {1, 2, 3}
# difference( ) 함수를 사용하면, 두 집합의 차집합을 출력할 수 있다.




# 집합의 함수 활용 예시

print('s1 & s2 : ', s1.isdisjoint(s2))

# 결과 : s1 & s2 :  False
# isdisjoint( ) 함수는 두 집합간의 교집합이 존재하는지 여부를 알려준다.
# False가 결과 값으로 나오면 교집합이 존재한다는 의미이며,
# True가 결과 값으로 나오면 교집합이 존재하지 않는다는 의미이다.


print(s1.issubset(s2))	# 결과 : False
print(s2.issubset(s1))	# 결과 : False

# issubset( ) 함수는 어떤 집합이 다른 집합의 부분집합인지 여부를 알려준다.
# True가 결과 값으로 나오면 부분집합이라는 의미이며,
# False가 결과 값으로 나오면 부분집합이 아니라는 의미이다.


print(s1.issuperset(s2))  # 결과 : False
print(s2.issuperset(s1))  # 결과 : False

# issuperset( ) 함수는 어떤 집합이 다른 집합을 포함하고 있는지 여부를 알려준다.
# True가 결과 값으로 나오면 포함한다는 의미이며,
# False가 결과 값으로 나오면 포함하지 않는다는 의미이다.



s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6])

print('subset : ', s2.issubset(s1))	# 결과 : True
print('superset : ', s1.issuperset(s2))	# 결과 : True

# 위의 예시와 동일한 논리이다.




# 집합의 테이터 삽입 & 제거 예시

s1 = set([1, 2, 3, 4])
s1.add(5)
print('s1 - ', s1)

# 결과 : s1 -  {1, 2, 3, 4, 5}
# add( ) 함수를 사용하면, 집합의 데이터를 삽입할 수 있다.



s1.remove(2)
print('s1 - ', s1)

# 결과 : s1 -  {1, 3, 4, 5}
# remove( ) 함수를 사용하면, 집합의 데이터를 삭제할 수 있다.
# 만약 집합에 존재하지 않는 데이터를 삭제할 경우에는 에러가 발생한다.



s1.discard(3)
print('s1 - ', s1)

# 결과 : s1 -  {1, 4, 5}
# discard( ) 함수를 사용하면, 집합의 데이터를 삭제할 수 있다. 



s1.discard(8)
print('s1 - ', s1)

# 결과 : s1 -  {1, 4, 5}
# discard( ) 함수를 사용하면, 집합의 데이터를 삭제할 수 있으며
# 만약, 집합에 존재하지 않는 데이터를 삭제할 경우에도 에러가 발생하지 않는다.
# 집합에 존재하지 않는 데이터를 삭제해도 결과 값에는 어떠한 변화도 발생하지 않으며, 
# 이러한 discard( ) 함수의 특징이 remove( ) 함수와의 차이점이다.



s1.clear()
print('s1 - ', s1)

# 결과 : s1 -  set()
# clear( ) 함수는 집합의 모든 데이터를 지운다.
# 참고로 리스트 자료형도 clear( ) 함수를 사용하여, 데이터를 모두 삭제할 수 있다.

'Python' 카테고리의 다른 글

Python - for문  (0) 2021.10.14
Python - if문  (0) 2021.10.14
Python - 기초 자료형(딕셔너리)  (0) 2021.10.13
Python - 기초 자료형(튜플)  (0) 2021.10.13
Python - 기초 자료형(리스트)  (0) 2021.10.13

댓글