파이썬 알고리즘 인터뷰 5장_리스트&딕셔너리_2022_01_15

leeseungsoo0701·2022년 1월 15일
post-thumbnail

5장 리스트, 딕셔너리

리스트

💡 순서대로 저장하는 시퀀스이자 변경 가능한 목록

입력 순서가 유지되며, 내부적으로는 동적 배열로 구현되어 있다.

동적 배열?

7장에 자세히 소개 될 것이다!
7장 링크:

리스트를 사용하면 사실상 스택,큐를 사용할지 고민하지 않아도 되며 스택과 큐에서 사용 가능한 모든 연산을 함께 제공한다.

리스트에서 첫번째 요소를 꺼내는 pop(0) 는 O(n)이므로 큐의 연산을 사용할 때는 주의해야한다.

그러기에 Deque(데크) 같은 자료형으로 성능을 높힐 수 있는데
이는 9장에서 설명하도록한다
9장 링크:

리스트의 활용 방법

a = list()

#or

a = []

######append
a = [1,2,3]
a.append(4)
print(a)
### result [1,2,3,4]

#####a.insert
a.insert(3,5) #3번 인덱스에 5를 넣어라
print(a)
### result [1,2,3,5,4]

#####slicing
a[1:3]
print(a)
### result [2,3,5]

##### 리스트의 요소 삭제 (del)
def a[1]
print(a)
### result [1,3,5,4]

##### 리스트의 요소 삭제 (pop)
a.pop(3)
print(a)
### result [1,3,5]

리스트의 특징

파이썬의 리스트는 연속된 공간에 요소를 배치하는 배열의 장점과 다양한 타입을 연결해 배치하는 연결 리스트의 장점을 모두 취한 듯한 형태를 띠며, 실제로 리스트를 잘 사용하기만해도 배열과 연결 리스트가 필요 없을 정도롤 강력하기 파이썬을 원시 타입 자료형은 제공하지도 않는다.


딕셔너리

💡 파이썬의 딕셔너리는 키/값 구조로 이뤄진 딕셔너리를 말한다. 해시 테이블을 이용하여 자료를 저장하고 다양한 타입을 키로 지원하면서도 입력과 조회 부분은 O(1)로 매우 효율적이다.

딕셔너리의 활용 방법

a = dict()

a  = {}

##### 키 value 설정
a = {'key1':'value1', 'key2':'value2', 'key3':'value3'}
print(a)
### result {'key1':'value1', 'key2':'value2', 'key3':'value3'}

##### 새로운 키 value 등록
a['key4'] = 'value4'
print(a)
### result {'key1':'value1', 'key2':'value2', 'key3':'value3','key4':'value4'}

###### 키가 존재하는지 존재하지 않는지에 
for k,v in a.items():
	print(k,v)
### result key1 value1
###				 key2 value2

딕셔너리 모듈

1) defaultdict 객체

존재하지 않는 키를 조회하는 경우, 에러 메시지를 출력하는 대신 디폴트 값을
기준으로 해당 키에 대한 딕셔너리 아이템을 생성해준다.

a.collections.defaultdict(int)
a['A'] = 5 
a['B'] = 4
a['C'] += 1
#C에서 에러가 나야겠지만 에러가 나지 않은 체 디폴트인 0에서 1을 더한 1의 value를 가진 아이템이 생성된다.

2) Counter 객체

아이템에 대한 개수를 계산하여 딕셔너리로 리턴한다.

a = [1,2,3,4,5,5,5,6,6]

b = a.collections.Counter(a)
print(b)
### result Counter({5:3, 6:2, 1:1, 2:1, 3:1, 4:1})

##### 가장 빈도가 높은 것은?
b.most_common(1)
[(5,3)]

3) OrderedDict 객체

입력값을 부여할 경우 OrderedDict는 입력 그대로 순서가 유지된다.



profile
한 줄이라도 정확하고 깊게 알아가보자 늦어도 좋다.

0개의 댓글