자료실/파이썬(Python)

파이썬(Python) - 집합(set)

자료수집중 2020. 7. 31.
반응형

 

집합은 파이썬 2.3부터 도입된 자료형입니다.

다른 자료형과 비교했을때 독특한 특징을 가지고 있습니다.

 

 

먼저 집합을 정의하는 방법은 다음과 같습니다.

변수 = {요소1, 요소2, ...}
변수 = set([요소1, 요소2, ...])
변수 = set((요소1, 요소2, ...))
변수 = set({키1:값1, 키2:값2....}) # 딕셔너리는 키의 값만 가져옴
변수 = set() #빈 집합 선언

딕셔너리와 같이 {}(중괄호)를 이용해서 정의하거나 set()을 사용해서 정의할 수 있습니다.

단 딕셔너리처럼 키와 값이 아닌 키만 요소로 가집니다.

집합은 리스트, 튜플 딕셔너리 모두 변환이 가능합니다.

 

 

다음 예제를 통해서 집합의 특성을 두가지를 알아보겠습니다.

첫 번째 순서가 의미가 없습니다.

a = set(["red", "blue", "green", "pink", "black"])
print(a)

실행할때마다 순서가 변경되는 결과를 보여줍니다.

그래서 집합은 인덱스를 사용해서 값을 가져올 수 없습니다.

 

 

두 번째는 중복을 허용하지 않습니다.

a = set("Hello World")
print(a)

 

 

집합은 mutable자료형 입니다.

add()와 update()를 이용해서 요소를 추가할 수 있고, remove()를 통해 제거할 수 있습니다.

a = set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(a)
a.add(99)
print(a)
a.update([50, 51, 47]) #여러개의 요소를 추가할 때 사용
print(a)
a.remove(99)
print(a)

update()를 이용해서 여러개의 요소를 추가할때 컬렉션을 사용해서 추가해야 합니다.

 

 

집합은 수학에서 사용하는 집합처럼 합집합, 교집합, 차집합, 대칭차집합연산을 지원합니다.

a = set([0, 5, 3, 4, 8, 10])
b = set([1, 15, 11, 4, 2, 0])

#합집합
print(a | b)
print(a.union(b))

#교집합
print(a & b)
print(a.intersection(b))

#차집합
print(a - b)
print(a.difference(b))

#대칭 차집합
print(a ^ b)
print(a.symmetric_difference(b))

 

 

부분집합, 진부분집합, 상위집합, 진상위집합도 지원합니다.

a = set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
b = set([5, 6, 7])

#부분집합
print(b <= a) #b는 a의 부분집합
print(b.issubset(a))

#진부분집합
print(b < a)

#상위집합
print(a >= b) #a는 b의 상위집합
print(a.issuperset(b))

#진상위집합
print(a > b)

댓글