Документация Python неофициальный перевод

list.md

108 строк · 7.6 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.3/c-api/list.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты списков89**`PyListObject`**1011Этот подтип [`PyObject`](https://python-all.ru/3.3/c-api/structures.html#PyObject) представляет объект списка Python.1213**[PyTypeObject](https://python-all.ru/3.3/c-api/type.html#PyTypeObject) `PyList_Type`**1415Этот экземпляр [`PyTypeObject`](https://python-all.ru/3.3/c-api/type.html#PyTypeObject) представляет тип списка Python. Это тот же объект, что и [`list`](https://python-all.ru/3.3/library/stdtypes.html#list) на уровне Python.1617#### `int PyList_Check(PyObject *p)`1819Возвращает истину, если *p* является объектом списка или экземпляром подтипа типа list.2021#### `int PyList_CheckExact(PyObject *p)`2223Возвращает истину, если *p* является объектом списка, но не экземпляром подтипа типа list.2425#### `PyObject* PyList_New(Py_ssize_t len)`2627*Возвращаемое значение: новая ссылка.*2829Возвращает новый список длины *len* в случае успеха или *NULL* при неудаче.3031> **Примечание**32>33> Если *len* больше нуля, элементы возвращаемого объекта списка устанавливаются в `NULL`. Поэтому нельзя использовать абстрактные функции API, такие как [`PySequence_SetItem()`](https://python-all.ru/3.3/c-api/sequence.html#PySequence_SetItem), или предоставлять объект коду Python до того, как все элементы будут установлены в реальный объект с помощью [`PyList_SetItem()`](https://python-all.ru/3.3/c-api/list.html#PyList_SetItem).3435#### `Py_ssize_t PyList_Size(PyObject *list)`3637Возвращает длину объекта списка *list*; это эквивалентно `len(list)` для объекта списка.3839#### `Py_ssize_t PyList_GET_SIZE(PyObject *list)`4041Макроформа [`PyList_Size()`](https://python-all.ru/3.3/c-api/list.html#PyList_Size) без проверки ошибок.4243#### `PyObject* PyList_GetItem(PyObject *list, Py_ssize_t index)`4445*Возвращаемое значение: заимствованная ссылка.*4647Возвращает объект на позиции *index* в списке, на который указывает *list*. Позиция должна быть положительной; индексация с конца списка не поддерживается. Если *index* выходит за границы, возвращает *NULL* и устанавливает исключение [`IndexError`](https://python-all.ru/3.3/library/exceptions.html#IndexError).4849#### `PyObject* PyList_GET_ITEM(PyObject *list, Py_ssize_t i)`5051*Возвращаемое значение: заимствованная ссылка.*5253Макроформа [`PyList_GetItem()`](https://python-all.ru/3.3/c-api/list.html#PyList_GetItem) без проверки ошибок.5455#### `int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)`5657Устанавливает элемент с индексом *index* в списке равным *item*. Возвращает `0` в случае успеха или `-1` при неудаче.5859> **Примечание**60>61> Эта функция «забирает» ссылку на *item* и отбрасывает ссылку на элемент, уже находящийся в списке на затрагиваемой позиции.6263#### `void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)`6465Макроформа [`PyList_SetItem()`](https://python-all.ru/3.3/c-api/list.html#PyList_SetItem) без проверки ошибок. Обычно используется только для заполнения новых списков, в которых нет предыдущего содержимого.6667> **Примечание**68>69> Этот макрос «крадёт» ссылку на *item* и, в отличие от [`PyList_SetItem()`](https://python-all.ru/3.3/c-api/list.html#PyList_SetItem), *не* отбрасывает ссылку на заменяемый элемент; любая ссылка в *list* на позиции *i* будет утеряна.7071#### `int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)`7273Вставляет элемент *item* в список *list* перед индексом *index*. Возвращает `0` при успехе; возвращает `-1` и устанавливает исключение при неудаче. Аналогично `list.insert(index, item)`.7475#### `int PyList_Append(PyObject *list, PyObject *item)`7677Добавляет объект *item* в конец списка *list*. Возвращает `0` при успехе; возвращает `-1` и устанавливает исключение при неудаче. Аналогично `list.append(item)`.7879#### `PyObject* PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)`8081*Возвращаемое значение: новая ссылка.*8283Возвращает список объектов из *list*, содержащий объекты *между* *low* и *high*. Возвращает *NULL* и устанавливает исключение при неудаче. Аналогично `list[low:high]`. Отрицательные индексы, как при срезе в Python, не поддерживаются.8485#### `int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)`8687Устанавливает срез *list* между *low* и *high* в содержимое *itemlist*. Аналогично `list[low:high] = itemlist`. *itemlist* может быть *NULL*, что означает присваивание пустого списка (удаление среза). Возвращает `0` при успехе, `-1` при неудаче. Отрицательные индексы, как при срезе в Python, не поддерживаются.8889#### `int PyList_Sort(PyObject *list)`9091Сортирует элементы *list* на месте. Возвращает `0` при успехе, `-1` при неудаче. Это эквивалентно `list.sort()`.9293#### `int PyList_Reverse(PyObject *list)`9495Переворачивает элементы *списка* на месте. Возвращает `0` в случае успеха, `-1` при ошибке. Эквивалентно `list.reverse()`.9697#### `PyObject* PyList_AsTuple(PyObject *list)`9899*Возвращаемое значение: новая ссылка.*100101Возвращает новый объект кортежа, содержащий элементы *списка*; эквивалентно `tuple(list)`.102103#### `int PyList_ClearFreeList()`104105Очищает список свободных элементов. Возвращает общее количество освобождённых элементов.106107Новое в версии 3.3.108