본문 바로가기
Python

[파이썬] 집합 (집합 선언, 집합에서 자주쓰이는 함수)

by 메이플 🍁 2022. 3. 9.

⚠️ 이 포스팅은 인프런님의 프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)을 공부하고 정리한 블로그 포스팅입니다. ⚠️

 

포스팅에 해당하는 목차는 다음과 같습니다:
섹션 3. 파이썬 기초 자료형

  • 집합(6-1)

 


 

1. 집합 선언

1.1 { }안에 원소 넣어 선언

a = {1, 2, 3}
print(a, type(a))
# {1, 2, 3} <class 'set'>

1.2 함수 set()으로 선언

a = set({1, 2, 3})
print(a, type(a))
# {1, 2, 3} <class 'set'>
a = set([1, 2, 3])
print(a, type(a))
# {1, 2, 3} <class 'set'>

 

2. 딕셔너리 vs 집합

딕셔너리는 key와 value가 한쌍인 값들의 집합으로 이루어진 데이터 형태

dataDict = {
  'key': 'value'
}

집합은 key 없이 value로만 이루어진 데이터 형태

dataSet = {'value1', 'value2', 'value3'}

집합에서는 서로 다른 자료형을 저장할 수 있다

a = {1, 2, 3, 'Alpha', 'Gamma', 'Delta'}

집합에서는 데어터가 중복될 수 없다

a = {1, 2, 3, 3, 3}
print(a)
# {1, 2, 3}

 

 

3. 데이터형 변환

b = set([1, 2, 3])
print(b)
# {1, 2, 3}

# 1. 집합 -> 튜플
dataTuple = tuple(b)
print(dataTuple)
# (1, 2, 3)

# 튜플형 응용
print(dataTuple[0])
# 1
print(dataTuple[1:3])
# (2, 3)

# 2. 집합 -> 리스트
dataList = list(b)
print(dataList)
# [1, 2, 3]

# 리스트형 응용
print(dataList[0])
# 1
print(dataList[1:3])
# [2, 3]

 

4. 집합 자료형 활용 (교집합, 합집합, 차집합)

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

4.1 교집합

기호 &

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

print(s1 & s2)
# {4, 5, 6}

함수 intersection()

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

print(s1.intersection(s2))
# {4, 5, 6}

4.2 합집합

기호 |

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

print(s1 | s2)
# {1, 2, 3, 4, 5, 6, 7, 8, 9}

함수 union()

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

print(s1.union(s2))
# {1, 2, 3, 4, 5, 6, 7, 8, 9}

4.3 차집합

기호 -

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

print(s1 - s2)
# {1, 2, 3}

함수 difference()

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

print(s1.difference(s2))
# {1, 2, 3}

 

5.집합에서 자주 쓰이는 함수

5.1 len()

집합안에 있는 원소의 개수를 리턴하는 함수

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

print(len(s1))
# 6

5.2 isdisjoint()

집합에 중복 원소가 없는지 확인하는 함수

  • True: 교집합되는 원소가 없을때
  • False: 교집합되는 원소가 있을때
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])

print(s1.isdisjoint(s2))
# False

5.3 issubset()

부분 집합인지 확인하는 함수

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

print(s2.issubset(s1))
# False
print(s3.issubset(s1))
# True

5.4 issuperset()

상위 집합인지 확인하는 함수

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

print(s1.issuperset(s2))
# False
print(s1.issuperset(s3))
# True

5.5 add()

데이터를 집합에 추가하는 함수

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

s1.add('new data')
print(s1)
# {1, 2, 3, 4, 5, 6, 'new data'}

5.6 remove()

데이터를 집합에서 삭제하는 함수

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

s1.remove(6)
print(s1)
# {1, 2, 3, 4, 5}

5.7 discard()

데이터를 집합에서 삭제하는 함수

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

s1.discard(6)
print(s1)
# {1, 2, 3, 4, 5}

5.8 clear()

집합에서 모든 데이터를 삭제하는 함수

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

s1.clear()
print(s1)
# set()

댓글