C 3

[CPython] 3. 다음 리스트의 크기는 (N*9/8+6)&~3입니다.

파이썬의 리스트는 가장 많이 사용하는 built-in mutable 타입 중 하나이다.이번 글에서는 이러한 리스트의 CPython수준에서의 작동을 명확히 알아보자. DeclarationPython의 리스트는 multi-type을 지원한다.당연하게도 모든 원소가 PyObject*이기 때문이다.python list의 구현부를 보자. [링크]// Copyright (c) Python Software Foundation. Licensed under the PSF License v2.typedef struct { PyObject_VAR_HEAD /* Vector of pointers to list elements. list[0] is ob_item[0], etc. */ PyObject **ob_..

CPython 2026.03.12

[CPython] 2. 덧셈의 시간복잡도는 O(logN)입니다.

Python에서 '수'를 나타내는 자료형은 int형과 float형이다.이러한 값들은 어떠한 데이터로 C++수준에서 작동할까? 먼저 python에서 1000**1000을 계산해 보자. 놀랍게도 잘 출력된다.C++에서는 이러한 값을 저장할 수 있는 기본 타입을 제공하지 않는다.Unsigned long long 은 0~2^64-1의 값을 가지는데, log(2^64-1)는 약 64log2이고, log(1000^1000)=3000이다.그렇다면 python에서는 어떤 타입으로 정수형을 저장하는 것 일까? 간단하게는 단순히 각 정수에 할당된 공간을 늘리는 방법이 있다.typedef unsinged long long ull;struct BigInt { ull a0; ull a1; (...) ull..

CPython 2026.03.04

[CPython] 1. 오브젝트란?

일반적으로 프로그래밍에서 리스트는 다음과 같은 종류의 구현체를 가진다. - Array List - Linked List - ...후에 자세히 설명하겠지만, python에서는 Array List를 이용하여 리스트를 구현한다.그러나 Array List는 각 원소의 크기가 일정해야 하며 이는 가변 크기를 가진 python의 리스트와는 다른 모습이다. 파이썬의 리스트 구현 부분을 보자. [링크]// Copyright (c) Python Software Foundation. Licensed under the PSF License v2.typedef struct { PyObject_VAR_HEAD /* Vector of pointers to list elements. list[0] is ob_item[..

CPython 2026.03.03