Python.

Структуры данных.

О преподавателе

  • Закончил факультет экспериментальной и теоретической физики МИФИ
  • 5 лет веб-разработки в Mail.Ru
  • Python, Go, и куда сейчас без Javascript
  • Автор open-source проекта Centrifugo

Определение

Структура данных — программная единица, позволяющая хранить и обрабатывать множество однотипных или логически связанных данных, предоставляющая набор функций для манипуляции данными (интерфейс структуры данных).

Выбор структуры

  • Быстродействие определенных операций интерфейса
  • Размер в оперативной памяти
  • Удовлетворение бизнес-требованиям

Порядки роста O(f)

Проблема 2038 года

Python time!

Перемещаемся в Jupyter notebook

Integer

typedef struct { 
  PyObject_HEAD 
  long ob_ival;  
} PyIntObject;

String

typedef struct { 
  PyObject_VAR_HEAD
  long ob_shash;
  int ob_sstate;
  char ob_sval[1];
} PyStringObject;

List

typedef struct {
  PyObject_VAR_HEAD
  PyObject **ob_item;
  Py_ssize_t allocated;
} PyListObject;

Tuple

typedef struct {
  PyObject_VAR_HEAD
  PyObject *ob_item[1];
} PyTupleObject;

Dict

typedef struct {
  Py_ssize_t me_hash;
  PyObject *me_key;
  PyObject *me_value;
} PyDictEntry;

typedef struct _dictobject PyDictObject;

struct _dictobject {
  PyObject_HEAD
  Py_ssize_t ma_fill; /* # Active + # Dummy */
  Py_ssize_t ma_used; /* # Active */
  Py_ssize_t ma_mask; /* equal to size of ma_table - 1; calc index*/
  PyDictEntry *ma_table;
  PyDictEntry *(*ma_lookup)(PyDictObject *mp, PyObject *key, long hash);
  PyDictEntry ma_smalltable[PyDict_MINSIZE];
};
Made with Slides.com