> **Источник:** https://python-all.ru/3.0/c-api/list.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# Объекты списков

**\[PyListObject\]`PyListObject`**

Этот подтип

[`PyObject`](https://python-all.ru/3.0/c-api/structures.html#PyObject)

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

**\[PyList\_Type\][PyTypeObject](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) `PyList_Type`**

Этот экземпляр [`PyTypeObject`](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) представляет тип списка Python. Это тот же объект, что и `list` и `types.ListType` на уровне Python.

**\[PyList\_Check\]int `PyList_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**

Возвращает истину, если

*p*

является объектом списка или экземпляром подтипа типа list.

**\[PyList\_CheckExact\]int `PyList_CheckExact`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**

Возвращает true, если

*p*

является объектом списка, но не экземпляром подтипа типа списка.

**\[PyList\_New\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyList_New`(Py\_ssize\_t *len*)**

*Возвращаемое значение: новая ссылка.*

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

> **Примечание**
>
> Если *length* больше нуля, элементы возвращаемого списка устанавливаются в `NULL`. Таким образом, нельзя использовать абстрактные функции API, такие как [`PySequence_SetItem`](https://python-all.ru/3.0/c-api/sequence.html#PySequence_SetItem), или предоставлять объект коду Python, пока все элементы не будут установлены в реальные объекты с помощью [`PyList_SetItem`](https://python-all.ru/3.0/c-api/list.html#PyList_SetItem).

**\[PyList\_Size\]Py\_ssize\_t `PyList_Size`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*)**

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

**\[PyList\_GET\_SIZE\]Py\_ssize\_t `PyList_GET_SIZE`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*)**

Макроформа

[`PyList_Size`](https://python-all.ru/3.0/c-api/list.html#PyList_Size)

без проверки ошибок.

**\[PyList\_GetItem\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyList_GetItem`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *index*)**

*Возвращаемое значение: заимствованная ссылка.*

Возвращает объект на позиции *pos* в списке, на который указывает *p*. Позиция должна быть положительной; индексация с конца списка не поддерживается. Если *pos* выходит за границы, возвращается *NULL* и устанавливается исключение [`IndexError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.IndexError).

**\[PyList\_GET\_ITEM\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyList_GET_ITEM`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *i*)**

*Возвращаемое значение: заимствованная ссылка.*

Макроформа [`PyList_GetItem`](https://python-all.ru/3.0/c-api/list.html#PyList_GetItem) без проверки ошибок.

**\[PyList\_SetItem\]int `PyList_SetItem`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *index*, [PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*item*)**

Устанавливает элемент с индексом *index* в списке в *item*. Возвращает `0` при успехе или `-1` при неудаче.

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

**\[PyList\_SET\_ITEM\]void `PyList_SET_ITEM`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *i*, [PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*o*)**

Макроформа [`PyList_SetItem`](https://python-all.ru/3.0/c-api/list.html#PyList_SetItem) без проверки ошибок. Обычно используется только для заполнения новых списков, в которых нет предыдущих элементов.

> **Примечание**
>
> Эта функция «похищает» ссылку на *item* и, в отличие от [`PyList_SetItem`](https://python-all.ru/3.0/c-api/list.html#PyList_SetItem), *не* освобождает ссылку на любой заменяемый элемент; любая ссылка в *list* на позиции *i* будет утеряна.

**\[PyList\_Insert\]int `PyList_Insert`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *index*, [PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*item*)**

Вставляет элемент

*item*

в список

*list*

перед индексом

*index*

. Возвращает

`0`

при успехе; при неудаче возвращает

`-1`

и устанавливает исключение. Аналог

`list.insert(index, item)`

.

**\[PyList\_Append\]int `PyList_Append`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*, [PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*item*)**

Добавляет объект

*item*

в конец списка

*list*

. Возвращает

`0`

при успехе; при неудаче возвращает

`-1`

и устанавливает исключение. Аналог

`list.append(item)`

.

**\[PyList\_GetSlice\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyList_GetSlice`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *low*, Py\_ssize\_t *high*)**

*Возвращаемое значение: новая ссылка.*

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

**\[PyList\_SetSlice\]int `PyList_SetSlice`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *low*, Py\_ssize\_t *high*, [PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*itemlist*)**

Устанавливает срез списка

*list*

между

*low*

и

*high*

равным содержимому

*itemlist*

. Аналог

`list[low:high] = itemlist`

.

*itemlist*

может быть

*NULL*

, что означает присвоение пустого списка (удаление среза). Возвращает

`0`

при успехе,

`-1`

при неудаче.

**\[PyList\_Sort\]int `PyList_Sort`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*)**

Сортирует элементы списка

*list*

на месте. Возвращает

`0`

при успехе,

`-1`

при неудаче. Эквивалентно

`list.sort()`

.

**\[PyList\_Reverse\]int `PyList_Reverse`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*)**

Переворачивает элементы

*списка*

на месте. Возвращает

`0`

в случае успеха,

`-1`

при ошибке. Эквивалентно

`list.reverse()`

.

**\[PyList\_AsTuple\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyList_AsTuple`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*)**

*Возвращаемое значение: новая ссылка.*

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