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

list.md

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

1> **Источник:** https://python-all.ru/3.0/c-api/list.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты списков89**\[PyListObject\]`PyListObject`**1011Этот подтип1213[`PyObject`](https://python-all.ru/3.0/c-api/structures.html#PyObject)1415представляет объект списка Python.1617**\[PyList\_Type\][PyTypeObject](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) `PyList_Type`**1819Этот экземпляр [`PyTypeObject`](https://python-all.ru/3.0/c-api/type.html#PyTypeObject) представляет тип списка Python. Это тот же объект, что и `list` и `types.ListType` на уровне Python.2021**\[PyList\_Check\]int `PyList_Check`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**2223Возвращает истину, если2425*p*2627является объектом списка или экземпляром подтипа типа list.2829**\[PyList\_CheckExact\]int `PyList_CheckExact`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*p*)**3031Возвращает true, если3233*p*3435является объектом списка, но не экземпляром подтипа типа списка.3637**\[PyList\_New\][PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject)\* `PyList_New`(Py\_ssize\_t *len*)**3839*Возвращаемое значение: новая ссылка.*4041Возвращает новый список длины *len* в случае успеха или *NULL* при неудаче.4243> **Примечание**44>45> Если *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).4647**\[PyList\_Size\]Py\_ssize\_t `PyList_Size`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*)**4849Возвращает длину объекта списка *list*; это эквивалентно `len(list)` для объекта списка.5051**\[PyList\_GET\_SIZE\]Py\_ssize\_t `PyList_GET_SIZE`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*)**5253Макроформа5455[`PyList_Size`](https://python-all.ru/3.0/c-api/list.html#PyList_Size)5657без проверки ошибок.5859**\[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*)**6061*Возвращаемое значение: заимствованная ссылка.*6263Возвращает объект на позиции *pos* в списке, на который указывает *p*. Позиция должна быть положительной; индексация с конца списка не поддерживается. Если *pos* выходит за границы, возвращается *NULL* и устанавливается исключение [`IndexError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.IndexError).6465**\[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*)**6667*Возвращаемое значение: заимствованная ссылка.*6869Макроформа [`PyList_GetItem`](https://python-all.ru/3.0/c-api/list.html#PyList_GetItem) без проверки ошибок.7071**\[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*)**7273Устанавливает элемент с индексом *index* в списке в *item*. Возвращает `0` при успехе или `-1` при неудаче.7475> **Примечание**76>77> Эта функция «похищает» ссылку на *item* и освобождает ссылку на элемент, который уже находился в списке на соответствующей позиции.7879**\[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*)**8081Макроформа [`PyList_SetItem`](https://python-all.ru/3.0/c-api/list.html#PyList_SetItem) без проверки ошибок. Обычно используется только для заполнения новых списков, в которых нет предыдущих элементов.8283> **Примечание**84>85> Эта функция «похищает» ссылку на *item* и, в отличие от [`PyList_SetItem`](https://python-all.ru/3.0/c-api/list.html#PyList_SetItem), *не* освобождает ссылку на любой заменяемый элемент; любая ссылка в *list* на позиции *i* будет утеряна.8687**\[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*)**8889Вставляет элемент9091*item*9293в список9495*list*9697перед индексом9899*index*100101. Возвращает102103`0`104105при успехе; при неудаче возвращает106107`-1`108109и устанавливает исключение. Аналог110111`list.insert(index, item)`112113.114115**\[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*)**116117Добавляет объект118119*item*120121в конец списка122123*list*124125. Возвращает126127`0`128129при успехе; при неудаче возвращает130131`-1`132133и устанавливает исключение. Аналог134135`list.append(item)`136137.138139**\[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*)**140141*Возвращаемое значение: новая ссылка.*142143Возвращает список объектов из *list*, содержащий объекты *между* *low* и *high*. Возвращает *NULL* и устанавливает исключение при неудаче. Аналог `list[low:high]`.144145**\[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*)**146147Устанавливает срез списка148149*list*150151между152153*low*154155и156157*high*158159равным содержимому160161*itemlist*162163. Аналог164165`list[low:high] = itemlist`166167.168169*itemlist*170171может быть172173*NULL*174175, что означает присвоение пустого списка (удаление среза). Возвращает176177`0`178179при успехе,180181`-1`182183при неудаче.184185**\[PyList\_Sort\]int `PyList_Sort`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*)**186187Сортирует элементы списка188189*list*190191на месте. Возвращает192193`0`194195при успехе,196197`-1`198199при неудаче. Эквивалентно200201`list.sort()`202203.204205**\[PyList\_Reverse\]int `PyList_Reverse`([PyObject](https://python-all.ru/3.0/c-api/structures.html#PyObject) *\*list*)**206207Переворачивает элементы208209*списка*210211на месте. Возвращает212213`0`214215в случае успеха,216217`-1`218219при ошибке. Эквивалентно220221`list.reverse()`222223.224225**\[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*)**226227*Возвращаемое значение: новая ссылка.*228229Возвращает новый объект кортежа, содержащий элементы *списка*; эквивалентно `tuple(list)`.230