Список объектов

type PyListObject

Этот подтип PyObject представляет объект списка Python.

PyTypeObject PyList_Type
Часть Стабильный ABI.

Этот экземпляр PyTypeObject представляет тип списка Python. Это тот же объект, что и list в слое Python.

int PyList_Check(PyObject *p)

Возвращает true, если p является объектом списка или экземпляром подтипа типа list. Эта функция всегда работает успешно.

int PyList_CheckExact(PyObject *p)

Возвращает true, если p является объектом списка, но не является экземпляром подтипа типа list. Эта функция всегда работает успешно.

PyObject *PyList_New(Py_ssize_t len)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

Возвращает новый список длины len в случае успеха, или NULL в случае неудачи.

Примечание

Если len больше нуля, элементы возвращаемого объекта-списка устанавливаются в NULL. Таким образом, вы не можете использовать абстрактные функции API, такие как PySequence_SetItem(), или подвергать объект воздействию кода Python до установки всех элементов в реальный объект с помощью PyList_SetItem().

Py_ssize_t PyList_Size(PyObject *list)
Часть Стабильный ABI.

Возвращает длину объекта списка в list; это эквивалентно len(list) для объекта списка.

Py_ssize_t PyList_GET_SIZE(PyObject *list)

Аналогично PyList_Size(), но без проверки ошибок.

PyObject *PyList_GetItemRef(PyObject *list, Py_ssize_t index)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI с версии 3.13.

Возвращает объект в позиции index в списке, на который указывает list. Позиция должна быть неотрицательной; индексация с конца списка не поддерживается. Если index находится вне границ (<0 or >=len(list)), возвращается NULL и устанавливается исключение IndexError.

Added in version 3.13.

PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)
Возвращаемое значение: Заимствованная ссылка. Часть Стабильный ABI.

Аналогично PyList_GetItemRef(), но возвращает borrowed reference вместо strong reference.

PyObject *PyList_GET_ITEM(PyObject *list, Py_ssize_t i)
Возвращаемое значение: Заимствованная ссылка.

Аналогично PyList_GetItem(), но без проверки ошибок.

int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)
Часть Стабильный ABI.

Установить элемент с индексом index в списке на item. При успехе возвращается 0. Если index выходит за границы, верните -1 и установите исключение IndexError.

Примечание

Эта функция «крадет» ссылку на item и отбрасывает ссылку на элемент, уже находящийся в списке в затронутой позиции.

void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)

Макроформа PyList_SetItem() без проверки ошибок. Обычно это используется только для заполнения новых списков, в которых нет предыдущего содержимого.

Проверка границ выполняется как утверждение, если Python построен в формате debug mode или with assertions.

Примечание

Этот макрос «крадет» ссылку на item и, в отличие от PyList_SetItem(), не отбрасывает ссылку на любой заменяемый элемент; любая ссылка в list на позиции i будет пропущена.

int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)
Часть Стабильный ABI.

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

int PyList_Append(PyObject *list, PyObject *item)
Часть Стабильный ABI.

Добавляет объект item в конец списка list. В случае успеха возвращает 0; в случае неудачи возвращает -1 и устанавливает исключение. Аналогично list.append(item).

PyObject *PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

Возвращает список объектов в list, содержащий объекты между low и high. Возвращает NULL и устанавливает исключение в случае неудачи. Аналогично list[low:high]. Индексация с конца списка не поддерживается.

int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)
Часть Стабильный ABI.

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

int PyList_Extend(PyObject *list, PyObject *iterable)

Расширить list содержимым iterable. Это то же самое, что и PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable), и аналогично list.extend(iterable) или list += iterable.

Вызывает исключение и возвращает -1, если list не является объектом list. В случае успеха верните 0.

Added in version 3.13.

int PyList_Clear(PyObject *list)

Удалить все элементы из списка. Это то же самое, что и PyList_SetSlice(list, 0, PY_SSIZE_T_MAX, NULL), и аналогично list.clear() или del list[:].

Вызывает исключение и возвращает -1, если list не является объектом list. В случае успеха верните 0.

Added in version 3.13.

int PyList_Sort(PyObject *list)
Часть Стабильный ABI.

Сортирует элементы list по местам. Возвращает 0 при успехе, -1 при неудаче. Это эквивалентно list.sort().

int PyList_Reverse(PyObject *list)
Часть Стабильный ABI.

Поменять местами элементы списка. Возвращает 0 при успехе, -1 при неудаче. Это эквивалентно list.reverse().

PyObject *PyList_AsTuple(PyObject *list)
Возвращаемое значение: Новая ссылка. Часть Стабильный ABI.

Возвращает новый кортежный объект, содержащий содержимое list; эквивалентно tuple(list).