list.md
1> **Источник:** https://python-all.ru/3.1/c-api/list.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты списков89**`PyListObject`**1011Этот подтип1213[`PyObject`](https://python-all.ru/3.1/c-api/structures.html#PyObject)1415представляет объект списка Python.1617**[PyTypeObject](https://python-all.ru/3.1/c-api/type.html#PyTypeObject) `PyList_Type`**1819Этот экземпляр2021[`PyTypeObject`](https://python-all.ru/3.1/c-api/type.html#PyTypeObject)2223представляет тип списка Python. Это тот же объект, что и2425[`list`](https://python-all.ru/3.1/library/functions.html#list)2627на уровне Python.2829**int `PyList_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*)**3031Возвращает истину, если3233*p*3435является объектом списка или экземпляром подтипа типа list.3637**int `PyList_CheckExact`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*p*)**3839Возвращает истину, если4041*p*4243является объектом списка, но не экземпляром подтипа типа list.4445**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyList_New`(Py\_ssize\_t *len*)**4647*Возвращаемое значение: новая ссылка.*4849Возвращает новый список длины *len* в случае успеха или *NULL* при неудаче.5051> **Примечание**52>53> Если *len* больше нуля, элементы возвращаемого объекта списка устанавливаются в `NULL`. Поэтому нельзя использовать абстрактные функции API, такие как [`PySequence_SetItem()`](https://python-all.ru/3.1/c-api/sequence.html#PySequence_SetItem), или предоставлять объект коду Python до того, как все элементы будут установлены в реальный объект с помощью [`PyList_SetItem()`](https://python-all.ru/3.1/c-api/list.html#PyList_SetItem).5455**Py\_ssize\_t `PyList_Size`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*)**5657Возвращает длину объекта списка *list*; это эквивалентно `len(list)` для объекта списка.5859**Py\_ssize\_t `PyList_GET_SIZE`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*)**6061Макроформа6263[`PyList_Size()`](https://python-all.ru/3.1/c-api/list.html#PyList_Size)6465без проверки ошибок.6667**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyList_GetItem`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *index*)**6869*Возвращаемое значение: заимствованная ссылка.*7071Возвращает объект на позиции *index* в списке, на который указывает *list*. Позиция должна быть положительной; индексация с конца списка не поддерживается. Если *index* выходит за границы, возвращает *NULL* и устанавливает исключение [`IndexError`](https://python-all.ru/3.1/library/exceptions.html#IndexError).7273**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyList_GET_ITEM`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *i*)**7475*Возвращаемое значение: заимствованная ссылка.*7677Макроформа [`PyList_GetItem()`](https://python-all.ru/3.1/c-api/list.html#PyList_GetItem) без проверки ошибок.7879**int `PyList_SetItem`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *index*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*item*)**8081Устанавливает элемент с индексом *index* в списке равным *item*. Возвращает `0` в случае успеха или `-1` при неудаче.8283> **Примечание**84>85> Эта функция «забирает» ссылку на *item* и отбрасывает ссылку на элемент, уже находящийся в списке на затрагиваемой позиции.8687**void `PyList_SET_ITEM`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *i*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**8889Макроформа [`PyList_SetItem()`](https://python-all.ru/3.1/c-api/list.html#PyList_SetItem) без проверки ошибок. Обычно используется только для заполнения новых списков, в которых нет предыдущего содержимого.9091> **Примечание**92>93> Этот макрос «крадёт» ссылку на *item* и, в отличие от [`PyList_SetItem()`](https://python-all.ru/3.1/c-api/list.html#PyList_SetItem), *не* отбрасывает ссылку на заменяемый элемент; любая ссылка в *list* на позиции *i* будет утеряна.9495**int `PyList_Insert`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *index*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*item*)**9697Вставляет элемент9899*item*100101в список102103*list*104105перед индексом106107*index*108109. Возвращает110111`0`112113при успехе; возвращает114115`-1`116117и устанавливает исключение при неудаче. Аналогично118119`list.insert(index, item)`120121.122123**int `PyList_Append`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*item*)**124125Добавляет объект126127*item*128129в конец списка130131*list*132133. Возвращает134135`0`136137при успехе; возвращает138139`-1`140141и устанавливает исключение при неудаче. Аналогично142143`list.append(item)`144145.146147**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyList_GetSlice`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *low*, Py\_ssize\_t *high*)**148149*Возвращаемое значение: новая ссылка.*150151Возвращает список объектов из *list*, содержащий объекты *между* *low* и *high*. Возвращает *NULL* и устанавливает исключение при неудаче. Аналогично `list[low:high]`. Отрицательные индексы, как при срезе в Python, не поддерживаются.152153**int `PyList_SetSlice`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *low*, Py\_ssize\_t *high*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*itemlist*)**154155Устанавливает срез156157*list*158159между160161*low*162163и164165*high*166167в содержимое168169*itemlist*170171. Аналогично172173`list[low:high] = itemlist`174175.176177*itemlist*178179может быть180181*NULL*182183, что означает присваивание пустого списка (удаление среза). Возвращает184185`0`186187при успехе,188189`-1`190191при неудаче. Отрицательные индексы, как при срезе в Python, не поддерживаются.192193**int `PyList_Sort`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*)**194195Сортирует элементы196197*list*198199на месте. Возвращает200201`0`202203при успехе,204205`-1`206207при неудаче. Это эквивалентно208209`list.sort()`210211.212213**int `PyList_Reverse`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*)**214215Переворачивает элементы216217*списка*218219на месте. Возвращает220221`0`222223в случае успеха,224225`-1`226227при ошибке. Эквивалентно228229`list.reverse()`230231.232233**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyList_AsTuple`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*list*)**234235*Возвращаемое значение: новая ссылка.*236237Возвращает новый объект кортежа, содержащий элементы *списка*; эквивалентно `tuple(list)`.238