[Python] List & Dictionary & Tuple & Set
1. List
파이썬이 제공하는 시퀀스 자료구조인 리스트는 C언어 또는 Java언어에서 사용하는 배열(Array)과 가장 흡사하고, 스택(stack)과 큐(Queue)및 데크(Deque)를 구현할 때에도 자주 사용되는 자료구조이다. list는 여러 element로 구성되어 있으며, 문자열처럼 각 element들에 순서가 있고, 그 순서를 인덱스(index)라 한다. 따라서 인덱싱을 통해 각 element들의 불러들어 올 수 있다. 접근 및 사용이 용이하도록 다양한 기능의 함수를 제공하고 그만큼 많이 쓰이는 자료구조이다.
List 표현
리스트는 대괄호'[]'으로 데이터들을 감싸며 표현하며, 감싸인 데이터들을 요소(element)라고 한다. element가 없는 비어있는 list(즉, empty_list)도 표현가능하다. element의 type이 Integer인경우 그대로 표현하고, string 일 경우 쌍따옴표("") 또는 홀따옴표('')로 감싸서 표현한다. element는 integer나 string등 같이 표현해도 되고, list안에 list로 element를 표현할 수 있다.
List의 특징을 다음과 같다
- '[ ]'으로 element를 둘러싼다.
- element들의 순서가 있다
- element들의 생성, 삭제, 수정이 가능하다.
>>> a = []
>>> a = list()
>>> b = [1, 2, 3]
>>> C = ['Life', 'is', 'too', 'short']
>>> d = [1, 2, 'Life', 'good']
>>> e = [1, 2, ['Life', 'good']]
2. Tuple
Tuple은 element들을 '()'로 감싸고 있어 List와 비슷한 역할을 하지만, 다른 특성을 가지고 있다. Tuple은 List처럼 elemnet들의 순서가 있지만 element값을 변경할 수 없다.
Tuple의 특징을 다음과 같다
- '( )'으로 element를 둘러싼다.
- element들의 순서가 있다
- element들의 생성, 삭제, 수정이 불가능하다.
Tuple 표현
Tuple은 element를 둘러싸을때 '()'으로 감싼다. element들을 '()'를 감싸지 않아도 tuple로 표현된다. tuple안에 tuple을 element를 넣어 복잡하게 표현도 가능하다
>>> a = (1, 2, 3)
>>> a
(1, 2, 3)
>>> b = 3, 4, 5
(3, 4, 5)
>>> c = ('a', 'b', ('ab', 'cd'))
('a', 'b', ('ab', 'cd'))
3. Dictionary
데이터가 다양해지고 속성과 값들의 표현들이 많아져 단순 List나 tuple로 데이터를 표현하기가 힘들다. 따라서 데이터들의 대응관계(속성과 값)를 잘 나타낼 수 있는 자료형이 딕셔너리(Dictionary)이다.
즉, 사전이라는 의미로 예를들어 "people"이라는 단어에 "사람"그리고 "baseball"이라는 단어에는 "야구"라는 뜻을 부합시키듯, Dictionary에서도 Key와 Value로 한 쌍을 이루어 element를 갖는다. 그러나 element들은 순서를 갖지 않고, dictionary에서 원하는 element를 찾고자하면 element의 key를 통해 value를 얻을 수 있다. 마치 사전에서 "baseball"의 뜻을 찾기위해 "baseball"를 찾는 것과 같다.
Dictionary 표현
{Key1:Value1, Key2:Value2, Key3:Value3, ...}
Key와 Value의 쌍 여러 개가 { }로 둘러싸여 있다. 각각의 요소는 Key : Value 형태로 이루어져 있고 쉼표(,)로 구분되어 있다.
dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
위에서 Key는 각각 'name', 'phone', 'birth'이고, 각각의 Key에 해당하는 Value는 'pey', '0119993323', '1118'이 된다.
다음 예는 Key로 정수 값 1, Value로 문자열 'hi'를 사용한 예이다.
>>> a = { 1 : 'hi }
또한 다음 예처럼 Value에 리스트도 넣을 수 있다.
>>> a = { 'a' : [1, 2, 3] }
Dictionary element 추가하기
>>> a = { 1 : 'a' }
>>> a[2] = 'b'
>>> a
{ 1 : 'a', 2 : 'b' }
{1: 'a'} 딕셔너리에 a[2] = 'b'와 같이 입력하면 딕셔너리 a에 Key와 Value가 각각 2와 'b'인 2 : 'b'라는 딕셔너리 쌍이 추가된다.
>>> a['name'] = 'pey'
>>> a
{1: 'a', 2: 'b', 'name': 'pey'}
딕셔너리 a에 'name': 'pey'라는 쌍이 추가되었다.
>>> a[3] = [1,2,3]
>>> a
{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
Dictionary element 삭제하기
>>> a = {1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
>>> del a[1]
>>> a
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}
위 예제는 딕셔너리 요소를 지우는 방법을 보여 준다. del 함수를 사용해서 del a[key]처럼 입력하면 지정한 Key에 해당하는 {key : value} 쌍이 삭제된다.
Dictionary Key-Value 확인
>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99
>>> a = {1:'a', 2:'b'}
>>> a[1]
'a'
>>> a[2]
'b'
>>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> dic['name']
'pey'
>>> dic['phone']
'0119993323'
>>> dic['birth']
'1118'
Dictionary 만들 시 주의사항
먼저 딕셔너리에서 Key는 고유한 값이므로 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 점을 주의해야 한다. 다음 예에서 볼 수 있듯이 동일한 Key가 2개 존재할 경우 1:'a' 쌍이 무시된다.
>>> a = {1:'a', 1:'b'}
>>> a
{1: 'b'}
Key에 리스트는 쓸 수 없다는 것이다. 하지만 튜플은 Key로 쓸 수 있다. 딕셔너리의 Key로 쓸 수 있느냐 없느냐는 Key가 변하는 값인지 변하지 않는 값인지에 달려 있다. 리스트는 그 값이 변할 수 있기 때문에 Key로 쓸 수 없다. 다음 예처럼 리스트를 Key로 설정하면 리스트를 키 값으로 사용할 수 없다는 오류가 발생한다
>>> a = {[1,2] : 'hi'}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
4. Set
Set은 python 2.3부터 지원한 자료형으로, 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형이다. Set은 다음과 같은 특징이 있다.
- 중복을 허용하지 않는다.
- 순서가 없다(Unodered).
Set 표현
>>> s1 = set([1,2,3])
>>> s1
{1, 2, 3}
>>> s2 = set("Hello")
>>> s2
{'e', 'H', 'l', 'o'}