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

list.md

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

1> **Источник:** https://python-all.ru/2.6/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/2.6/c-api/structures.html#PyObject)1415представляет объект списка Python.1617**[PyTypeObject](https://python-all.ru/2.6/c-api/type.html#PyTypeObject) `PyList_Type`**1819Этот экземпляр2021[`PyTypeObject`](https://python-all.ru/2.6/c-api/type.html#PyTypeObject)2223представляет тип Python list. Это тот же объект, что и2425`list`2627на уровне Python.2829**int `PyList_Check`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*)**3031Возвращает истину, если *p* является объектом списка или экземпляром подтипа типа list.3233Изменено в версии 2.2: Теперь допускаются подтипы.3435**int `PyList_CheckExact`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*p*)**3637Возвращает истину, если *p* является объектом списка, но не экземпляром подтипа типа list.3839Новое в версии 2.2.4041**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyList_New`(Py\_ssize\_t *len*)**4243*Возвращаемое значение: новая ссылка.*4445Возвращает новый список длины *len* в случае успеха или *NULL* при неудаче.4647> **Примечание**48>49> Если *length* больше нуля, элементы возвращаемого списка устанавливаются в `NULL`. Поэтому нельзя использовать абстрактные функции API, такие как [`PySequence_SetItem()`](https://python-all.ru/2.6/c-api/sequence.html#PySequence_SetItem), или передавать этот объект в код Python, пока все элементы не будут установлены в реальные объекты с помощью [`PyList_SetItem()`](https://python-all.ru/2.6/c-api/list.html#PyList_SetItem).5051Изменено в версии 2.5: Для *size* эта функция использовала `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.5253**Py\_ssize\_t `PyList_Size`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*)**5455Возвращает длину объекта списка *list*; это эквивалентно `len(list)` для объекта списка.5657Изменено в версии 2.5: Эта функция возвращала `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.5859**Py\_ssize\_t `PyList_GET_SIZE`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*)**6061Макроформа [`PyList_Size()`](https://python-all.ru/2.6/c-api/list.html#PyList_Size) без проверки ошибок.6263Изменено в версии 2.5: Этот макрос возвращал `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.6465**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyList_GetItem`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *index*)**6667*Возвращаемое значение: заимствованная ссылка.*6869Возвращает объект в позиции *pos* списка, на который указывает *p*. Позиция должна быть положительной; индексация с конца списка не поддерживается. Если *pos* выходит за границы, возвращает *NULL* и устанавливает исключение [`IndexError`](https://python-all.ru/2.6/library/exceptions.html#exceptions.IndexError).7071Изменено в версии 2.5: Для *index* эта функция использовала `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.7273**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyList_GET_ITEM`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *i*)**7475*Возвращаемое значение: заимствованная ссылка.*7677Макроформа [`PyList_GetItem()`](https://python-all.ru/2.6/c-api/list.html#PyList_GetItem) без проверки ошибок.7879Изменено в версии 2.5: Для *i* этот макрос использовал `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.8081**int `PyList_SetItem`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *index*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*item*)**8283Устанавливает элемент с индексом *index* в списке равным *item*. Возвращает `0` в случае успеха или `-1` при неудаче.8485> **Примечание**86>87> Эта функция «забирает» ссылку на *item* и отбрасывает ссылку на элемент, уже находящийся в списке на затрагиваемой позиции.8889Изменено в версии 2.5: Для *index* эта функция использовала `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.9091**void `PyList_SET_ITEM`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *i*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*o*)**9293Макроформа [`PyList_SetItem()`](https://python-all.ru/2.6/c-api/list.html#PyList_SetItem) без проверки ошибок. Обычно используется только для заполнения новых списков, в которых нет предыдущего содержимого.9495> **Примечание**96>97> Этот макрос «крадёт» ссылку на *item* и, в отличие от [`PyList_SetItem()`](https://python-all.ru/2.6/c-api/list.html#PyList_SetItem), *не* освобождает ссылку на заменяемый элемент; любая ссылка в *list* на позиции *i* будет утеряна.9899Изменено в версии 2.5: Для *i* этот макрос использовал `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.100101**int `PyList_Insert`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *index*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*item*)**102103Вставляет элемент *item* в список *list* перед индексом *index*. Возвращает `0` при успехе; возвращает `-1` и устанавливает исключение при неудаче. Аналогично `list.insert(index, item)`.104105Изменено в версии 2.5: Для *index* эта функция использовала `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.106107**int `PyList_Append`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*item*)**108109Добавляет объект110111*item*112113в конец списка114115*list*116117. Возвращает118119`0`120121при успехе; возвращает122123`-1`124125и устанавливает исключение при неудаче. Аналогично126127`list.append(item)`128129.130131**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyList_GetSlice`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *low*, Py\_ssize\_t *high*)**132133*Возвращаемое значение: новая ссылка.*134135Возвращает список объектов из *list*, содержащий объекты *между* *low* и *high*. Возвращает *NULL* и устанавливает исключение при неудаче. Аналогично `list[low:high]`. Отрицательные индексы, как при срезе в Python, не поддерживаются.136137Изменено в версии 2.5: Для *low* и *high* эта функция использовала `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.138139**int `PyList_SetSlice`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*, Py\_ssize\_t *low*, Py\_ssize\_t *high*, [PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*itemlist*)**140141Устанавливает срез *list* между *low* и *high* в содержимое *itemlist*. Аналогично `list[low:high] = itemlist`. *itemlist* может быть *NULL*, что означает присваивание пустого списка (удаление среза). Возвращает `0` при успехе, `-1` при неудаче. Отрицательные индексы, как при срезе в Python, не поддерживаются.142143Изменено в версии 2.5: Для *low* и *high* эта функция использовала `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-разрядных систем.144145**int `PyList_Sort`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*)**146147Сортирует элементы148149*list*150151на месте. Возвращает152153`0`154155при успехе,156157`-1`158159при неудаче. Это эквивалентно160161`list.sort()`162163.164165**int `PyList_Reverse`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*)**166167Переворачивает элементы168169*списка*170171на месте. Возвращает172173`0`174175в случае успеха,176177`-1`178179при ошибке. Эквивалентно180181`list.reverse()`182183.184185**[PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject)\* `PyList_AsTuple`([PyObject](https://python-all.ru/2.6/c-api/structures.html#PyObject) *\*list*)**186187*Возвращаемое значение: новая ссылка.*188189Возвращает новый объект кортежа, содержащий элементы *списка*; эквивалентно `tuple(list)`.190