태코놀로지

리스트, 튜플, 사전, 집합 자료구조 (List, Tuple, Dictionary, and Set) 본문

Python3/EECS-WinterSchool

리스트, 튜플, 사전, 집합 자료구조 (List, Tuple, Dictionary, and Set)

태코놀로지 2017. 1. 28. 15:54

2.2 List, Tuple, Dictionary, and Set

이번 시간에는 파이썬이 제공하는 네 가지 서로다른 타입의 자료구조에 대해서 알아보고, 각 구조가 갖는 특징에 대해서 알아보자. 파이썬에는 리스트, 튜플, 사전(dict), 집합(set) 자료구조가 있다. 그리고 각 자료구조마다 데이터에 접근하는 방법 및 데이터를 추가/삭제하는 방법이 상이하게 다르다. 또한 자료구조가 갖는 특징에 따라서 데이터의 변경 유무의 차이점도 있다. 따라서 대표되는 네 가지 자료구조의 특/장점과 어떤 상황에 사용해야 적합한 지 파악할 필요가 있다. 리스트, 튜플, 사전, 집합 자료구조 순서에 따라서 각 자료구조의 특징 및 대표되는 함수 호출에 대해서 정리해본다.



리스트(List) 자료구조

파이썬이 제공하는 시퀀스 자료구조인 리스트에 대해서 알아보자. 우선 리스트를 생성하고, 참조하고, 수정하는 방법에 대해서 알아본다. 리스트와 관련된 다양한 함수들을 사용해본다. C언어 또는 Java 언어에서 사용하는 배열과 가장 흡사하고, 스택(Stack)과 큐(Queue) 및 데크(Deque)를 구현할 때에도 자주 사용되는 자료구조가 리스트다. 접근 및 사용이 용이하도록 다양한 기능의 함수 또한 제공되고, 빈번하게 사용되는 만큼 리스트에 대해서는 주의깊에 학습할 필요가 있다. 리스트 관련 함수에 대한 자세한 내용은 점프투파이썬 리스트 자료형 위키 문서를 참조한다.



다른 언어의 배열과 달리 파이썬의 리스트 및 튜플이 가지는 가장 큰 특징은 어떤 객체도 요소가 될 수 있다는 점이다. 그렇다면 리스트와 튜플의 차이는 무엇일까? 리스트는 변할 수 있고(mutable), 튜플은 문자열과 마찬가지로 불변(immutable)한 성질을 갖는다. 튜플에 항목을 할당하고 나서, 이를 바꿀 수 없다는 것을 의미한다. 반면에 리스트는 변경 가능하다. 항목을 할당하고, 자유롭게 수정하거나 삭제할 수 있다.


튜플(Tuple) 자료구조

튜플은 리스트의 append, insert 등과 같은 함수가 없고, 제공되는 함수가 리스트에 비하면 극히 적다. 이는 튜플을 생성하고 나면 수정할 수 없는 불변성 때문인데, 그렇다면 어떤 경우에 튜플을 사용할까? 보통 파이썬에서 튜플은 아래의 목적에 따라 사용된다.

  • 튜플은 리스트보다 더 적은 공간을 사용한다. 
  • 불변성에 의해서 튜플이 의도치 않게 변경될 염려가 없다. 
  • 튜플은 딕셔너리의 키로 사용할 수 있다.
  • 네임드 튜플(named tuple)은 객체의 단순한 대안이 될 수 있다. 
  • 함수 인자들은 튜플로 전달된다.
튜플를 생성하고, 참조하고, 수정하는 방법에 대해서 알아본다. 튜플와 관련된 다양한 함수들을 사용해본다. 튜플 관련 함수에 대한 자세한 내용은 점프투파이썬 튜플 자료형 위키 문서를 참조한다.


사전(Dictionary) 자료구조

사전 자료구조는 리스트와 유사한 부분이 많다. 다른 점은 항목의 순서를 따지지 않으며, 0 또는 1과 같은 오프셋으로 접근이 불가능 하다는 것이다. 그 대신 값(value)에 해당하는 고유한 키(key)를 지정하고, 해당 키를 통해서 원하는 값에 접근할 수 있다. 대부분의 경우에 키는 문자열이지만, 불변(immutable)한 성질을 가진 어떤 타입도 키로 할당할 수 있다. 마지막으로 사전 자료구조는 변경가능(mutable)하기 때문에 키-값 요소를 추가/삭제/변경할 수 있으며, 각 키는 유일해야한다.


다른 언어에는 사전과 유사한 형태의 자료구조를 연관 배열(associative array), 해쉬(hash), 해쉬맵(hashmap)으로 부르기도 한다. 그리고 파이썬에서는사전 자료구조를 보통 딕셔너리라고 부르며, 딕트라고 줄여서 표현하기도 한다.


사전 자료구조를 생성하고, 참조하고, 수정하는 방법에 대해서 알아보고, 관련된 다양한 함수들을 사용해본다. 사전 자료구조 관련 함수에 대한 자세한 내용은 점프투파이썬 사전 자료형 위키 문서를 참조한다.



집합(Set) 자료구조

마지막으로 집합 자료구조는 값은 버리고 키만 남은 딕셔너리와 같다. 딕셔너리와 마찬가지로 각 키는 유일해야 한다. 어떤 것이 존재하는지 여부만 판단하기 위해서는 집합 자료구조를 사용한다. 그리고 키에 어떤 정보를 첨부해서 그 결과를 얻고 싶을 때는 딕셔너리를 사용한다.


우선, 집합 자료구조를 생성하고, 참조하고, 수정하는 방법에 대해서 알아본다. 그런 다음, 집합 자료구조와 관련된 다양한 함수들을 사용해본다. 다른 자료구조와 마찬가지로 집합 자료구조 관련 함수에 대한 자세한 내용은 점프투파이썬 집합 자료형 위키 문서를 참조한다.




Comments