자료형 비교 및 정리
앞에서 여러 가지 자료 형태에 대해서 알아보았는데 자료 형태별로 비슷한 것도 많고 같은 함수인데 다른 자료 형태에 적용 해면 결과가 다르게 나온다는 부분들도 아직 정확하게 구별이 되지 않을 것 같다.
나도 하나씩 다시 읽어보면 '이렇게 되는구나'하고 이해는 되는데 여러 종류의 데이터 형태가 갑자기 나오면 어떻게 하는 거였더라?, 이건 어떻게 되는 거였더라? 하고 헷갈리게 된다. 물론 여러 번 반복하다 보면 자주 사용하는 자료 형태에 대해서는 능숙해지겠지만 아직 배우는 단계에 있는 사람으로서는 헷갈리니 비교해보면서 정리해보자. 또 앞의 자료형들의 설명 시 미처 몰랐던 내용 중 새로 알게 된 점들도 추가해보겠다.
리스트 | 튜플 | 딕셔너리 | 집합 | |
표시형식 | [] | () | {} | set 또는 {} |
예시 | [1,2,[3,4]] | (1, 2) | {1:'a', 2:'b'} | set([1,2]) 또는{1, 2} |
특징 | 모든 형식의 데이터 유형을 한번에 넣을 수 있음 | 데이터 변경 불가능 | key와 value로 쌍을이룸 | 집합만의 연산 가능 |
관련함수 | append, sort, reverse, pop, count 등 | 리스트와 유사 | keys, values, items 등 | intersection, union, difference 등 |
나도 정리하면서 하나씩 살펴보니 리스트와 튜플이 유사하고, 딕셔너리와 집합이 유사하다는 것을 알았다. 그러면 이렇게 따로 분리해서 공통점과 차이점을 알아보도록 하자.
1. 리스트와 튜플의 차이점 / 공통점
리스트와 튜플의 가장 큰 차이점은 생성한 데이터를 수정/변경이 가능한지에 대한 여부이다. 리스트는 자료 값의 변경이 가능하지만 튜플은 불가능하다. 튜플은 변경이나 수정이 불가능 하지만 처리속도가 빠르다는 장점이 있으며 변수를 한 번에 선언할 수 있다.
변수를 한 번에 선언할 수 있다는 것은 a, b, c = 10, 20, 30과 같이 사용할 수 있는데, a = 10, b = 20, c = 30이라는 값을 한 번에 입력하게 된다. 튜플은 전에 설명한 것과 같이 괄호를 생략 가능하기 때문에 쓰지 않았지만 괄호를 쓴다면 (a, b, c) = (10, 20, 30)과 같이 써도 동일한 의미이다. 지금은 기초적인 부분만 하고 있어 어디에 사용하는지 잘 모르겠으나 나중에 프로그램을 코딩하다 보면 분명히 필요한 경우가 생길 것이다.
처리속도가 빠르다는 장점이 있지만 데이터의 수정이나 변경이 되지 않는 자료 형태를 어디에다가 쓸 수 있는지 알아보자. 예를 들면 우리 매장에 오는 고객들에게 이름, 성별, 생년월일 등의 정보를 물어서 데이터를 저장했다고 하자. 그렇다면 이 고객의 이름, 성별, 생년월일 등은 변하지 않는 정보이다. 이런 정보들을 저장하고 나중에 혹시 내가 데이터 분석 시 실수로 변경하면 안 되기 때문에 튜플로 저장하는 것이 좋다. 만약 튜플에 있는 데이터를 변환해서 사용하고 싶다면 새로운 이름으로 리스트 등의 자료형으로 가져와서 쓰면 된다. 그러면 원래 튜플 형태로 저장된 자료형은 그대로 두고도 분석을 할 수 있으니 말이다. 그 외에 사용 가능한 함수들은 유사하다고 보면 된다.
2. 딕셔너리와 집합의 차이점 / 공통점
딕셔너리와 set은 표시 형식이 동일하다. 지난번 집합에 대한 내용을 다룰 때는 set이라는 것으로만 집합을 생성할 수 있는 줄 알았지만 조금 더 공부해보니 딕셔너리와 동일하게 {} 형태로도 쓸 수 있다는 걸 알았다.
그러면 표시 형식이 같은데 어떤 게 딕셔너리고 집합인지 구분할 수 있는 방법은 무엇일까? 바로 안의 값이 쌍을 이루면 딕셔너리고 그렇지 않다면 집합이라고 생각하면 된다. 예를 들어보면 {1:'a', 2:'b'}는 딕셔너리다. : 기호의 앞뒤로 key와 value가 쌍을 이루는 것을 알 수 있다. 집합의 경우는 {1, 2}와 같이 쌍을 이루지 않고 사용된다.
또 둘 모두 중복을 허용하지 않는다라는 것과 순서가 없다는 공통점이 있지만 기준에 대해서는 차이가 있다. 순서가 없기 때문에 앞의 순서가 필요한 인덱싱과 슬라이싱 기능을 사용할 수 없다. 인덱싱은 index 함수와는 다른 말이므로 혼동하지 않기로 하자.
딕셔너리는 key의 값만 중복되지 않으면 된다. 예를 들어 key는 이름이고 value는 성별이라고 한다면 key인 이름에는 김철수, 홍길동 같이 중복된 이름이 쓰이면 안 되지만 value에는 남자, 남자와 같이 들어갈 수 있는 것이다. 참고로 key 중복이 발생하는 경우는 하나만 남겨두고 삭제되는데 어떤 값이 삭제될지 모른다. 집합의 경우도 중복을 허용하지 않기 때문에 데이터에 같은 값이 있는 경우 랜덤으로 삭제된다.
딕셔너리와 집합의 경우 중복이 발생했을 때 제일 처음 나온 것만 두고 삭제한다던가 제일 뒤에 나온 것만 두고 삭제하자라는 규칙을 적용하지 않고 왜 어떤 것이 삭제되는지 알 수 없다는 것일까? 앞의 내용을 다시 보면 힌트가 있다. 둘은 순서가 없는 자료 형태이기 때문에 어느 것이 맨 앞이고 맨 뒤인지 알 수 없기 때문에 랜덤으로 삭제되는 것이다.
이번에는 지금까지 자료형에 대해서 비교해봤는데 도움이 되었으면 한다. 나도 이전에 정리한 내용과 또 추가로 알게 된 내용을 정리할 수 있는 시간이었다. 이전에 작성한 자료형에 대해서 알고 싶다면 아래 링크를 걸어둘 테니 공부하는데 참고가 되었으면 한다.
'방구석코딩 > 파이썬 기초문법' 카테고리의 다른 글
[파이썬 데이터 분석] 반복문 - While문 (0) | 2022.06.01 |
---|---|
[파이썬 데이터분석] 제어문 - IF문 (if, else, elif), in (0) | 2022.05.30 |
[파이썬 기초] 자료형 기능들 - 참/거짓, 저장, 복사, 메모리 삭제(del) (0) | 2022.05.25 |
[파이썬 기초] 집합 자료형 - 교집합, 합집합, 차집합, ADD, UPDATE, REMOVE (0) | 2022.05.24 |
[파이썬 기초] 딕셔너리(dictionary) 자료형- 특징, 사용법 (0) | 2022.05.16 |
댓글