본문 바로가기

python 기초강의

파이썬 set (집합) 문법 독학 정리 #6

파이썬 set (집합) 문법 독학 정리 #6

파이썬 set (집합) 문법 독학 정리 #6

 

안녕하세요.

 

파이썬 기본 문법 독학을 위한 포스팅 6번째 시간 입니다.

그동안 리스트, 딕셔너리, 튜플 자료형에 대해서 진행을 했었습니다.

오늘은 set, 즉 집합 자료형에 관해서 설명과 그 사용예제를 포스팅 하겠습니다.

 

 

파이썬 기본 문법 set 란?

파이썬 set 자료형에 관해서 설명을 시작 하겠습니다.

파이썬의 set 자료형은 수학의 집합과 상당히 비슷합니다.파이썬 set 자료형은 원소의 순서가 없으며 집합 안에서 유니크한 ㄱ밧을 가지고 있습니다.즉, mutable 객체 입니다.

 

중광호를 사용하여 자료를 선언 하는것은 dictionary와 비슷하지만 key는 존재 하지 않고 값만 존재 하는것이 그 특징 입니다. list나 dictionary 자료형의 경우 대괄호나 중괄호로 변수 선언이 가능 했지만, set 자료형은 중괄호를 사용하며, set 생성자를 이용해서 선언 할 수도 있습니다.

 

파이썬 기본 문법 set 란?1

 

파이썬 기본 문법 set 선언 방법

파이썬 set 자료형을 선언 하는 방법은 크게 두가지가 있습니다.

중괄호를 사용하는 방법과, set 라는 생성자를 이용하는 방법이 있습니다.

# set (세트, 집합) 선언 방법
group_a = {"seoul","ulsan","deagu","deajeon","kwangju","busan"}
group_b = set(["deagu","busan","changwon"])

print(group_a)
print(group_b)

print(type(group_a))
print(type(group_b))

group_a는 중괄호를 사용하여 선언 하였으며, group_b는 set 라는 생성자를 이용하여 선언한 set 입니다.

우선 group_a와 group_b를 선언하고, 내용을 출력 한 뒤, 생성된 두 변수의 type을 출력 해 보았습니다.

파이썬 기본 문법 set 선언 방법1

 

파이썬 기본 문법 set 원소 확인

어떤 값이 선언한 set(집합)에 존재 하는지 하지 않는지 간단 하게 확인을 할 수 있습니다.

# 원소 확인
group_a = {"seoul","ulsan","deagu","deajeon","kwangju","busan"}
group_b = set(["deagu","busan","changwon"])

print(group_a)
print(group_b)

print("seoul" in group_a)
print("seoul" in group_b)

위와 마찬가지로  group_a와 group_b를 선언하고, 두 변수의 내용을 출력 한 뒤 각각의 변수에 "seoul" 이라는 원소가 있는지 확인을 했습니다. group_a에는 있고, group_b에는 없다고 나오겠죠. True 와 False로 아래와 같이 출력이 되는것을 확인 할 수 있습니다.

파이썬 기본 문법 set 원소 확인1

 

 

파이썬 기본 문법 set 원소의 추가 및 삭제

파이썬에서 set (집합)을 선언 하는것은 알았으니 원소들을 추가 하거나 삭제 하는 방법에 관하여 설명을 드리겠습니다.

우선, 원소를 특정 set에 추가 하는 방법은 아래와 같습니다.

 

add와 update를 이용 할 수 있는데요.

하나의 원소(값)만 추가를 할 때는 add를, 두개 이상의 원소를 추가 할때는 update를 쓰면 됩니다.

 

 

 

사용 예제 코드를 보여 드리겠습니다.

# 원소추가
group_a = {"seoul","ulsan","deagu","deajeon","kwangju","busan"}
group_b = set(["deagu","busan","changwon"])

print(group_a)
group_a.add("incheon")
print(group_a)

print(group_b)
group_b.update(["kyungju","pohang"])
print(group_b)

마찬가지로 group_a와 group_b를 선언하고, 두 변수의 내용을 출력 한 뒤 group_a에는 "incheon"이라는 값을, group_b에는 "kyungju","pohang" 이라는 두 값을 update를 이용해서 추가 하도록 해보았습니다.

 

각각 set는 출력전과 후에 출력을 했습니다.

파이썬 기본 문법 set 원소의 추가 및 삭제1

위 결과와 같이 잘 추가 되어 출력 된 것을 확인 할 수 있습니다.

 

다음은 원소의 삭제 입니다.

삭제는 remove 명령을 통해서 진행 할 수 있습니다.

# 원소삭제
group_b = set(["deagu","busan","changwon"])

print(group_b)
group_b.remove("changwon")
print(group_b)

위와 같이 group_b를 선언 후 remove 함수를 통해서 "changwon"이라는 원소를 삭제 하고 다시 group_b를 출력 해 보았습니다.

 

결과는 아래와 같습니다.

파이썬 기본 문법 set 원소의 추가 및 삭제2

remove 함수를 통해서 원소가 set 내에서 잘 삭제 된것을 확인 할 수 있습니다.

 

파이썬 기본 문법 set 자료형 복사

파이썬의 set 자료형을 쉽게 복사 할 수 있습니다.

# 세트 복사
group_a = {"seoul","ulsan","deagu","deajeon","kwangju","busan"}
group_c = set(group_a)
print(group_c)
print(type(group_c))

group_a를 원소들과 함께 선언을 하고, 이 set를 group_c라는 이름의 set에 복사를 하도록 하겠습니다.

그리고, 복사한 group_c의 자료형까지 확인을 해보도록 하겠습니다.

파이썬 기본 문법 set 자료형 복사1

잘 복사가 되네요. 

 

파이썬 기본 문법 set 집합 연산

위에서도 언급을 하였듯이, 파이썬의 set 자료형은 수학의 집합과 거의 유사합니다.

합집합, 차집합, 대칭차집합, 부분집합을 예로 들어 그 연산을 하는 방법을 설명 하겠습니다.

 

우선 합집합과 차집합 입니다.

# 합집합
group_a = {"seoul","ulsan","deagu","deajeon","kwangju","busan"}
group_b = set(["deagu","busan","changwon"])

print(group_a)
print(group_b)

print(group_a | group_b)
print(group_a.union(group_b))

# 차집합

print(group_a - group_b)
print(group_a.difference(group_b))

위 코드를 잠시 설명을 드리면, group_a, group_b를 각각 선언 하고, 내용을 출력을 합니다.

그리고 합집합을 출력하는데, 합집합은 두가지 방식으로 출력 할 수 있습니다. 코드를 보시면 아시겠지만, "|" 기호를 통하여 출력하는 것과 union이라는 명령어를 이용 하는 방법이 있습니다.

 

 

 

차집합 또한 두가지 방법이 있습니다 "-" 기호와 difference 라는 명령어를 사용 하는 방법이 있습니다.

각각의 출력 결과를 아래 결과 화면을 통해서 확인 하시면 됩니다.

파이썬 기본 문법 set 집합 연산1

스크린샷에서 빨간 상자안의 내용은 합집합을 두가지 방법으로 출력한 내용이고, 파란박스는 차집합의 두가지 방법이 정상적으로 출력된 내용임을 확인 할 수 있습니다.

 

다음은 대칭차집합 입니다.

대칭차집합은 아래 그림에서 빨간색, 파란색 부분을 출력하는것을 말 합니다.

파이썬 기본 문법 set 집합 연산2

파이썬의 set 집합 연산에서 대칭차집합 또한 두가지 방법으로 연산을 할 수 있습니다. "^" 라는 기호와 symmetric_difference 라는 명령어를 통해서 연산이 됩니다. 

 

코드를 함께 보시겠습니다.

# 대칭차집합
group_a = {"seoul","ulsan","deagu","deajeon","kwangju","busan"}
group_b = set(["deagu","busan","changwon"])

print(group_a)
print(group_b)

print(group_a ^ group_b)
print(group_a.symmetric_difference(group_b))

 

 

 

위와 같이 대칭차집합 연산 코드를 작성 할 수 있습니다.

그 결과는 아래와 같습니다.

파이썬 기본 문법 set 집합 연산3

 

group_a와 group_b 각각 자기 자신의 set에서만 존재하는 집합의 원소들이 출력 된것을 확인 할 수 있습니다.

 

다음은 부분집합 입니다. 부분집합은 어떤 set가 다른 set에 대하여 부분 집합인지 여부를 출력하는 코드를 통해서 확인 해보도록 하겠습니다.

두개의 set를 선언하고, 각각 서로의 부분 집합 인지 여부를 확인 하여 출력 하도록 하겠습니다.

# 부분집합 여부 확인
group_a = {"seoul","ulsan","deagu","deajeon","kwangju","busan"}
group_b = set(["seoul","ulsan","deagu"])

print(group_a)
print(group_b)

print(group_a.issubset(group_b)) # group_a가 group_b의 부분집합인지?
print(group_b.issubset(group_a)) # group_b가 group_a의 부분집합인지?

 

 

 

두 set를 선언 하고, 출력을 한 뒤, 코드의 주석과 같이 group_a가 group_b의 부분집합인지, 또는 group_b가 group_a의 부분집합인지를 확인 하여 True or False를 출력 하게 됩니다.

파이썬 기본 문법 set 집합 연산4

 

자, 오늘은 이렇게 파이썬의 set (집합) 자료형에 대한 내용을 알아보았습니다.

파이썬의 많은 자료형들을 하나하나씩 알아가는 기분이 좋습니다.

언젠가는 파이썬으로 멋진 코딩을 할 수 있는 그날까지 홧팅 하겠습니다!!!

 

감사합니다.

 


#지금까지 포스팅한 파이썬 기본 문법 관련 포스트들을 링크 해두겠습니다.

2020/08/25 - [python 기초강의] - 파이썬 코딩 기본 문법 요약 정리 #1

 

파이썬 코딩 기본 문법 요약 정리 #1

파이썬 코딩 기본 문법 요약 정리 #1 그동안, 파이썬을 이용해서 웹 크롤러도 만들어보고, restAPI도 만들어보고, 데이터 분석도 해봤지만, 사실 기본기가 없는 상황에서 실력이 더 느는 것 같지가

stricky.tistory.com

2020/08/25 - [python 기초강의] - 파이썬 코딩 기본 문법 요약 정리 문자열 #2

 

파이썬 코딩 기본 문법 요약 정리 문자열 #2

파이썬 코딩 기본 문법 요약 정리 문자열 #2 안녕하세요. 오늘은 지난 시간에 이어서 파이썬 기본 문법 문자열에 대해서 공부를 같이 해보도록 하겠습니다. 지난 시간에는 숫자, 숫자 계산 및 불

stricky.tistory.com

2020/08/26 - [python 기초강의] - 파이썬 독학 기본 문법 리스트 #3

 

파이썬 독학 기본 문법 리스트 #3

파이썬 독학 기본 문법 리스트 #3 이번이 벌써 파이썬 독학을 위한 기본 문법 세 번째 시간입니다. 다시 한번 말씀드리지만, 파이썬 기본 문법 포스팅은 제가 잘해서 하는 게 아닙니다. 저도 이 ��

stricky.tistory.com

2020/08/31 - [python 기초강의] - 파이썬 독학 기본 문법 딕셔너리 자료형 #4

 

파이썬 독학 기본 문법 딕셔너리 자료형 #4

파이썬 독학 기본 문법 딕셔너리 자료형 #4 이번 시간은 파이썬의 딕셔너리에 관한 포스트입니다. 딕셔너리는 리스트와 더불어 가장 많이 쓰이는 파이썬의 자료형입니다. 딕셔너리 자료형이 다�

stricky.tistory.com

2020/09/02 - [python 기초강의] - 파이썬 튜플 독학 기본 문법 정리 #5

 

파이썬 튜플 독학 기본 문법 정리 #5

파이썬 튜플 독학 기본 문법 정리 #5 안녕하세요. 그동안 파이썬 기본 문법에 대해서 정리를 꾸준하게 하고 있습니다. 벌써 5번째 시간이 되었습니다. 오늘은 비교적 심플한 튜플에 대해서 알아��

stricky.tistory.com

 

 

 

by.sTricky