▼2020년/데이터 분석 실무

[Python] 파이썬에서의 자료형, 집합 자료형 (6/7)

ITISIK 2020. 1. 22. 09:54
반응형

  지난 포스트에서는 딕셔너리 자료형에 대해서 알아봤었다. 이번 포스트에서는 수학에서의 집합 개념을 그대로 차용하고 있는 집합 자료형에 대해서 알아보려고 한다.

 

중·고등학교 수학시간에 배운 집합(Set)

  집합 자료형에 대해서 배우기 전에, 중고등학교 수학시간에 배웠던 집합에 대해서 간단하게 복습해보고자 한다. 수학에서 집합이란 '기준을 명확히 할 수 있는 것들의 모임'이라고 배웠다. 예를들면 키 180cm 이상인 사람의 모임. 이라고 하면 집합이 맞고, 아름다운 꽃의 모임. 이라고 하면 집합이 아니게 된다. 180cm 이상은 객관적 기준이지만, 아름답다는 것은 주관적인 기준이기 때문이다.

 

  그렇게 모여있는 각 요소요소를 콤마(,)로 구분하고 중괄호( {} )로 묶어서 표현하는 것이 집합이다. 예를들면 아래와 같다.

{'김철수', '홍길동', '전도현', '김만수'}

  이러한 집합의 첫 번째 특징은 '중복을 허용하지 않는다.'는 점이다. 'APPLE'이라는 단어를 구성하는 스펠링의 모임이라는 기준으로 집합을 구성하면 아래와 같이 된다.

{'A', 'P', 'L', 'E'}

  그리고 집합의 마지막 특징은 '순서라는 개념이 없다.'는 점이다. 바로 위에서 A, P, L , E 순서대로 나열했지만 순서가 P, E, A, L이든 E, L, P, A이든 모두 동일한 집합이라는 점이다.

 

파이썬에서의 집합 자료형

  프로그래밍(혹은 데이터분석)에서 중요한 개념 두 가지만 요약하고 본격적으로 집합 자료형에 대해서 알아보려고 한다.

 

1. 중복을 허용하지 않는다.
2. 순서가 없다.

 

  그럼 이제부터 파이썬 코드를 이용해서 집합 자료형을 만들어보도록 하자. 방금 예로 들었던 APPLE로 만들어보도록 하겠다.

set_exam1 = set("APPLE")
set_exam1

set_exam2 = set([94, 12, 19])
set_exam2

  만약 비어있는 집합인 공집합을 만들고 싶다면 아래 코드를 이용하면 된다.

null_set = set()

 

집합의 특정 원소값 취하기

  하지만 집합에는, 순서가 없기 때문에 리스트나 튜플, 딕셔너리 자료형 등에서 했던 인덱싱 등의 방법으로 값을 취할 수 없다. 따라서 집합 자료형에서 특정 값을 취하기 위해서는 이러한 자료형들로의 형 변환을 진행한 뒤에 인덱싱 등을 통해 값을 취해야 한다.

set_exam3 = set(['a', 1, 'b', 2, 'c'])
set_exam3
# {'b', 1, 2, 'c', 'a'}

list_exam = list(set_exam3)
list_exam
# ['b', 1, 2, 'c', 'a']
list_exam[1]
# 1

tuple_exam = tuple(set_exam3)
tuple_exam
# ('b', 1, 2, 'c', 'a')
tuple_exam[4]
# 'a'

 

집합의 다양한 연산(교집합, 합집합, 차집합)

  교집합이란, 해당 집합들 간에 공통적으로 존재하는 원소들만으로 이루어진 집합을 의미한다.

  합집합이란, 해당 집합들 안에 존재하는 모든 원소들을 포함하는 집합을 의미한다.

  차집합이란, 기존의 집합에서 교집합에 해당하는 원소들을 뺀 나머지 집합을 의미한다.

  이렇게 글로 보면 이해하기가 어렵다. 아래의 예제를 보면서 몸으로 익히도록 하자.

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

set_exam4 & set_exam5
set_exam4 | set_exam5
set_exam4 - set_exam5
set_exam5 - set_exam4

set_exam4.intersection(set_exam5)
set_exam4.union(set_exam5)
set_exam4.difference(set_exam5)
set_exam5.difference(set_exam4)

집합과 관련된 함수

  이미 있는 집합 자료형에 값을 추가(단일개)해주는 add() 함수

set_exam6 = set("additio")
set_exam6.add("n")
set_exam6

  이미 있는 집합 자료형에 값 추가(복수개)해주는 update() 함수

set_exam7 = set("a")
set_exam7.update("ddition")
set_exam7

 

  이미 있는 집합 자료형의 특정 값 삭제(단일개)해주는 remove() 함수

set_exam7.remove('a')
set_exam7

  여기까지 집합 자료형에 대해서 알아보았습니다. 다음 포스트에서는 파이썬 자료형에서의 마지막, 불 자료형(논리형)에 대해서 알아보도록 하겠습니다!

반응형