[Python] 자료형-리스트, 딕셔너리

DayeWay·2021년 4월 26일
0
post-thumbnail

파이썬 자료형 list(), dict()

어느 학문에서든 가장 중요한 것은 가장 빈번하게 사용하는 것을 의미한다.
파이썬에서 가장 빈번하게 사용하는 자료형들이 있다면 리스트와 딕셔너리이지 않을까 한다. 또한 코딩테스트에서도 가장 빈번하게 사용된다고 하니, 확실하게 짚고가야겠다!!

1. 리스트

파이썬에서 리스트(List)란, 순서대로 저장이 되고 중복이 가능하며 변경이 가능한 목록을 의미한다. 자바에서는 ArrayList에 해당한다.
리스트의 장점을 뽑자면 다양한 기능을 제공한다는 건데, 특히 스택과 큐의 모든 연산들을 제공하니 list 하나로 다양한 배열들과 기능들을 사용할 수 있는 셈이다. 또한, 동일 타입의 배열이 아닌 다양한 타입(숫자, 문자, boolean)이 배열로 삽입이 가능하다.

1-1. 리스트의 주요 기능

기능설명
len(a)전체 요소의 갯수를 반환
a[i]인덱스 i의 요소를 반환
a[i:j]인덱스 i부터 j-1 까지의 길이만큼 요소를 가져온다
a.count(element)element 요소의 개수를 반환
a.index(element)element 요소의 인덱스를 반환
a.append(element)element 요소를 리스트의 마지막에 추가한다
a.pop()리스트의 가장 마지막에 있는 요소를 추출 (스택 연산)
a.pop(0)리스트의 가장 앞의 요소를 추출 (큐 연산, 큐는 deque 이용이 용이)
del a[i]인덱스 i의 요소를 삭제 (전체 복사 필요, 부담스러운 작업)
a.remove(element)element 요소를 삭제
a.sort()리스트를 소트
a.reverse()리스트를 뒤집는다
min(a), max(a)리스트의 최대, 최솟값을 계산

1-2. 리스트 활용

선언

1. >>> a = list()
2. >>> a = []
3. >>> a = [1, 2, 3]

추가

1. >>> a.append(4)
   >>> a
   [1, 2, 3, 4]
2. >>> a.insert(2, 5)
   >>> a
   [1, 2, 5, 3, 4]
3. >>> a.append('파이썬')
   >>> a
   [1, 2, 5, 3, 4, '파이썬']
4. >>> a.append(True)
   >>> a
   [1, 2, 5, 3, 4, '파이썬', True]

슬라이싱

1. >>> a[1:3]
   [2, 5]
2. >>> a[:3]
   [1, 2, 5]
3. >>> a[4:]
   [4, '파이썬', True]
4. >>> a[1:4:2]			(마지막 2는 step)
   [2, 3]

삭제

1. >>> del a[1]
   >>> a
   [1, 5, 3, 4, '파이썬', True]
2. >>> remove(3)
   >>> a
   [1, 5, 4, '파이썬', True]
3. >>> a.pop()
   True
   >>> a
   [1, 5, 4, '파이썬']
4. >>> a.pop(0)
   1
   >>> a
   [5, 4, '파이썬']

파이썬은 모든 것이 객체이며 리스트의 경우 객체에 대한 참조를 배열의 형태로 관리하는 것과 같다.

2. 딕셔너리

딕셔너리는 키(key)와 값(value)이 서로 mapping되어 있는 자료형이다.
키는 중복이 불가하지만, 값인 경우에 중복이 가능하다. 또한, 키에는 문자, 숫자뿐만아니라 집합 및 불변 객체들이 들어올 수 있다. 자바에서는 HashMap에 해당한다.
파이썬 3.6 이하에서는 딕셔너리의 순서가 유지되지 않았었는데, 3.7버전 이후로는 내부적으로 인덱스를 이용하여 순서가 유지되도록 향상되었다. 덕분에 3.6버전에서 메모리 사용량을 20%나 줄일 수 있도록 개선되었다.
딕셔너리에서는 리스트와 달리 모듈을 사용하게 된다.

2-1. 딕셔너리의 주요 기능

기능설명
len(a)딕셔너리의 요소(키:값)의 개수를 반환
a[key]키를 조회하여 이에 해당하는 값 반환
a[key] = value키/값을 삽입
key in aa 딕셔너리에 key가 있는지 확인

2-2. 딕셔너리의 활용

선언

1. >>> a = dict()
2. >>> a = {}
3. >>> a = {'key1' : 'value1' , 'key2' : 'value2'}
   >>> a
   {'key1' : 'value1' , 'key2' : 'value2'}

추가

1. >>> a['key3'] = 'value3'
   >>> a
   {'key1' : 'value1' , 'key2' : 'value2', 'key3' : 'value3'}
   >>> a['key1']
   'value1'

삭제

1. >>> del a['key1']
   >>> a
   {'key2' : 'value2', 'key3' : 'value3'}

확인

1. >>> 'key2' in a
   True
2. >>> 'key1' in a
   False

2-3. 딕셔너리 모듈

딕셔너리는 이와 관련된 특수한 형태인 collections 이라는 모듈의 기능을 사용할 수 있다.

  1. defaultdict 객체
    defaultdict 객체는 존재하지 않는 키를 조회할 경우, 에러 메세지를 출력하는 대신 디폴트 값을 기준으로 해당 키에 대한 딕셔너리 아이템을 새로 생성해준다.
>>> a = cl=ollections.defaultdict(int)
>>> a['A'] = 5
>>> a['B'] = 4
>>> a
defaultdict(<class 'int'>, {'A' : 5, 'B' : 4})

여기서 딕셔너리에는 키 'A', 'B'에 대한 두 쌍의 아이템만 존재하는데 이에 존재하지 않는 키에 대한 연산을 시도하게 된다면,

>>> a['C'] += 1
>>> a
defaultdict(<class 'int'>, {'A' : 5, 'B' : 4, 'C' : 1})

이처럼, defaultdict 객체는 에러없이 디폴트 0을 기준으로 자동으로 아이템을 생성해준다.

  1. Counter 객체
    Counter 객체는 아이템에 대한 개수를 계산하여 딕셔너리 형태로 반환하다.
>>> a = [1, 2, 3, 4, 5, 5, 5, 6, 6]
>>> b = collectionsCounter(a)
>>> b
Counter({5 : 3, 6 : 2, 1 : 1, 2 : 1, 3 : 1, 4 : 1})

Counter 객체는 이와 같이 키에는 아이템의 값이 들어가고 값에는 해당 아이템의 개수가 들어가 여러 분야에서 다양하게 사용이 가능하다.
또한, 빈도수가 가장 높은 요소도 추출 가능하다.

>>> b.most_common(2)
[(5, 3), (6, 2)]
  1. OrderedDict 객체
    파이썬 3.6버전 이하에서는 입력 순서가 유지되지 않았기 때문에 collections 모듈의 OrderedDict 객체를 사용하여 입력순서대로 저장을 하였다.
>>> collections.OrderedDict({'banana' : 3, 'apple' : 4, 'pear' : 1, 'orange' : 2})
OrderedDict([('banana', 3), ('apple', 4), ('pear', 1), ('orange', 2)])

파이썬 3.7버전 이상으로는 순서가 유지되는 경우가 있어 해당 객체를 사용하지 않겠지만, 빈번하게 3.6이하 버전을 쓰는 곳이 많으므로 유의하자.

profile
엔지니어에서 개발자로 가는 중

0개의 댓글