# Список об’єктів

type PyListObject

  Цей підтип `PyObject` представляє об’єкт списку Python.

PyTypeObject PyList_Type
  Part of the Stable ABI.

  Цей екземпляр `PyTypeObject` представляє тип списку Python. Це той самий об’єкт, що й `list` на рівні Python.

int PyList_Check(PyObject *p)
  Thread safety: Atomic.

  Повертає true, якщо p є об’єктом списку або екземпляром підтипу типу списку. Ця функція завжди успішна.

int PyList_CheckExact(PyObject *p)
  Thread safety: Atomic.

  Повертає true, якщо p є об’єктом списку, але не екземпляром підтипу типу списку. Ця функція завжди успішна.

PyObject *PyList_New(Py_ssize_t len)
  Return value: New reference. Part of the Stable ABI. Thread safety: Atomic.

  Повертає новий список довжиною len у разі успіху або `NULL` у разі помилки.

  Примітка

  If len is greater than zero, the returned list object’s items are set to `NULL`. Thus you cannot use abstract API functions such as `PySequence_SetItem()` or expose the object to Python code before setting all items to a real object with `PyList_SetItem()` or `PyList_SET_ITEM()`. The following APIs are safe APIs before the list is fully initialized: `PyList_SetItem()` and `PyList_SET_ITEM()`.

Py_ssize_t PyList_Size(PyObject *list)
  Part of the Stable ABI. Thread safety: Atomic.

  Повертає довжину об’єкта списку в list; це еквівалентно `len(list)` для об’єкта списку.

Py_ssize_t PyList_GET_SIZE(PyObject *list)
  Thread safety: Atomic.

  Similar to `PyList_Size()`, but without error checking.

PyObject *PyList_GetItemRef(PyObject *list, Py_ssize_t index)
  Return value: New reference. Part of the Stable ABI since version 3.13. Thread safety: Atomic.

  Return the object at position index in the list pointed to by list. The position must be non-negative; indexing from the end of the list is not supported. If index is out of bounds (`<0 or >=len(list)`), return `NULL` and set an `IndexError` exception.

  Added in version 3.13.

PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)
  Return value: Borrowed reference. Part of the Stable ABI. Thread safety: Safe to call from multiple threads with external synchronization only.

  Like `PyList_GetItemRef()`, but returns a borrowed reference instead of a strong reference.

  Примітка

  In the free-threaded build, the returned borrowed reference may become invalid if another thread modifies the list concurrently. Prefer `PyList_GetItemRef()`, which returns a strong reference.

PyObject *PyList_GET_ITEM(PyObject *list, Py_ssize_t i)
  Return value: Borrowed reference. Thread safety: Safe to call from multiple threads with external synchronization only.

  Similar to `PyList_GetItem()`, but without error checking.

  Примітка

  In the free-threaded build, the returned borrowed reference may become invalid if another thread modifies the list concurrently. Prefer `PyList_GetItemRef()`, which returns a strong reference.

int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)
  Part of the Stable ABI. Thread safety: Atomic.

  Установіть для елемента з індексом index у списку значення item. У разі успіху повертає `0`. Якщо index виходить за межі, поверніть `-1` і встановіть виняток `IndexError`.

  Примітка

  Ця функція «викрадає» посилання на елемент і відкидає посилання на елемент, який уже є у списку в ураженій позиції.

void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)
  Thread safety: Safe to call from multiple threads with external synchronization only.

  Макроформа `PyList_SetItem()` без перевірки помилок. Зазвичай це використовується лише для заповнення нових списків, де немає попереднього вмісту.

  Bounds checking is performed as an assertion if Python is built in debug mode or `with assertions`.

  Примітка

  Цей макрос «викрадає» посилання на item і, на відміну від `PyList_SetItem()`, не відкидає посилання на будь-який елемент, який замінюється; будь-яке посилання в списку в позиції i буде витік.

  Примітка

  In the free-threaded build, this macro has no internal synchronization. It is normally only used to fill in new lists where no other thread has a reference to the list. If the list may be shared, use `PyList_SetItem()` instead, which uses a per-object lock.

int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)
  Part of the Stable ABI. Thread safety: Safe for concurrent use on the same object.

  Вставте елемент item у список list перед індексом index. Повернути `0` у разі успіху; повертає `-1` і встановлює виняток у разі невдачі. Аналогічно `list.insert(index, item)`.

int PyList_Append(PyObject *list, PyObject *item)
  Part of the Stable ABI. Thread safety: Atomic.

  Додайте об’єкт item у кінець списку list. Повернути `0` у разі успіху; повертає `-1` і встановлює виняток у разі невдачі. Аналогічно `list.append(item)`.

PyObject *PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)
  Return value: New reference. Part of the Stable ABI. Thread safety: Atomic.

  Повертає список об’єктів у списку, що містить об’єкти між низьким і високим. Повертає `NULL` і встановлює виняток у разі невдачі. Аналогічно `list[low:high]`. Індексація з кінця списку не підтримується.

int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)
  Part of the Stable ABI. Thread safety: Safe for concurrent use on the same object.

  Встановіть фрагмент списку між низьким і високим вмістом itemlist. Аналогічно `list[low:high] = itemlist`. itemlist може бути `NULL`, що вказує на призначення порожнього списку (видалення фрагмента). Повертає `0` в разі успіху, `-1` у випадку невдачі. Індексація з кінця списку не підтримується.

  Примітка

  In the free-threaded build, when itemlist is a `list`, both list and itemlist are locked for the duration of the operation. For other iterables (or `NULL`), only list is locked.

int PyList_Extend(PyObject *list, PyObject *iterable)
  Thread safety: Safe for concurrent use on the same object.

  Extend list with the contents of iterable. This is the same as `PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable)` and analogous to `list.extend(iterable)` or `list += iterable`.

  Raise an exception and return `-1` if list is not a `list` object. Return 0 on success.

  Added in version 3.13.

  Примітка

  In the free-threaded build, when iterable is a `list`, `set`, `dict`, or dict view, both list and iterable (or its underlying dict) are locked for the duration of the operation. For other iterables, only list is locked; iterable may be concurrently modified by another thread.

int PyList_Clear(PyObject *list)
  Thread safety: Atomic.

  Remove all items from list. This is the same as `PyList_SetSlice(list, 0, PY_SSIZE_T_MAX, NULL)` and analogous to `list.clear()` or `del list[:]`.

  Raise an exception and return `-1` if list is not a `list` object. Return 0 on success.

  Added in version 3.13.

int PyList_Sort(PyObject *list)
  Part of the Stable ABI. Thread safety: Safe for concurrent use on the same object.

  Розсортуйте елементи списку за місцем. Повертає `0` в разі успіху, `-1` у випадку невдачі. Це еквівалентно `list.sort()`.

  Примітка

  In the free-threaded build, element comparison via `__lt__()` can execute arbitrary Python code, during which the per-object lock may be temporarily released. For built-in types (`str`, `int`, `float`), the lock is not released during comparison.

int PyList_Reverse(PyObject *list)
  Part of the Stable ABI. Thread safety: Safe for concurrent use on the same object.

  Переверніть елементи списку на місця. Повертає `0` в разі успіху, `-1` у випадку невдачі. Це еквівалент `list.reverse()`.

PyObject *PyList_AsTuple(PyObject *list)
  Return value: New reference. Part of the Stable ABI. Thread safety: Atomic.

  Повертає новий об’єкт кортежу, що містить вміст list; еквівалент `tuple(list)`.