[Topic 1] 능력치를 편의성에 몰빵한 ‘List’
C++ vector 만 사용하더라도 매우 편리하고 신기했는데,
이보다 더 편의성에 능력치를 몰빵한 친구가 있었다. 누구일까?
바로 ‘List’ 라는 자료구조이다. 특징을 정리하면 다음과 같다.
- 리스트는 원소의 주소 값을 저장
- 비교 : C언어는 배열에 원소 값을 저장
- 장점 : 따라서 각 원소의 자료형이 무엇이든 상관 없다!
- 단점 : ob_item은 이중 포인터여서, 값 탐색 시 두 번의 탐색 과정을 거치게 되어 속도가 느리다.
- 리스트는 다양한 자료형을 단일 리스트에 관리 가능
- 비교 : C언어는 동적 배열에 삽입할 수 있는 자료형을 동일한 타입으로 제한
- 특징 : 다양한 활용을 가능하게 한다.
- 리스트는 초기 선언시 자료형과 크기 미지정
- 비교 : C언어는 배열 초기 선언시 자료형과 크기를 고정
- 특징 : 제한되는 부분이 줄어든다.
[Topic 2] 리스트가 가진 엄청난 스킬 ‘List Comprehension’
리스트 컴프리헨션에 정해진 형식이 있는 이유가 궁금했다.
구글링을 해봤는데 다음 정의가 있었다.
Python supports a concept called “list comprehensions”. It can be used to construct lists in a very natural, easy way, like a mathematician is used to do.
위와 같이 수학자들이 사용하는 식에 차용해서 가져왔다고 한다.
[Topic 3] HashTable vs Dictionary
두 개념이 약간 헷갈렸는데,
- 공통점 : (Key, Value) 형식의 자료구조
- 차이점 : Value 에 접근하는 방식의 차이
사실 파이썬에서는 둘을 크게 구분하고 있지 않은 것 같다.