개발/북TIL

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

대왕판다 2022. 7. 20. 14:55

오늘 TIL 3줄 요약

  • 파이썬의 자료형은 모두 객체

  • 다양한 모듈들, 특히 딕셔너리와 관련된 특수 형태의 컨테이너 자료형들을 활용하자

  • defaultdict, Counter, OrderedDict



     

TIL (Today I Learned) 날짜

  • 2022.07.20. WED


     

오늘 읽은 범위

  • 파이썬 알고리즘 인터뷰 5장 리스트, 딕셔너리


책에서 기억하고 싶은 내용을 써보세요.

  • 파이썬은 모든 것이 객체다.리스트 또한 객체에 대한 포인터목록을 관리하는 형태로 구현되어 있다.

    // CPython 에서 리스트는 요소에 대한 포인터목록을 갖고 있는 구조체로 선언되어 있다.
    typeof struct {
        PyObject_VAR_HEAD
        PyObject **ob_item;
        // 포인트 목록으로 사이즈를 조절하는 형태로 리스트요소 추가가 구현된다.
        Py_ssize_t allocated;
    }  pyListObject;
    
  • 이로인해 파이썬의 리스트는 배열과 연결 리스트를 합친듯한 강력한 기능을 제공할 수 있다.(그 과정에서 속도는 희생된다)

  • 파이썬의 딕셔너리는 숫자, 문자, 집합까지 불변 객체를 모두 키로 사용한다. 이 과정을 해싱이라고 하며, 해시 테이블을 이용해 자료를 저장한다. 입력과 조회는 O(1)에 가능하다.(최악의 경우에는 O(n))

  • 3.7버전부터는 Dict의 입력순서가 유지되나, 3.6이하에서는 collections.OrderedDict()라는 별도 자료형을 이용해야 유지된다.



오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 당연하지만 다양한 내장 모듈들을 이해하고 문제풀이에 적용하는 것이 중요할듯..

     

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • CPython?

    • 파이썬 프로그래밍언어의 참조 구현체. 내부가 C 언어로 구현된 파이썬이며 코드는 여기에서 확인가능.
    • 이름에서 추측할 수 있듯 CPython 외에도 JVM에서 실행할 수 있는 Jython도 있으며 python으로 구현한 pypy도 있다고한다.