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

list.md

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

1> **Источник:** https://python-all.ru/2.7/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/2.7/c-api/structures.html#c.PyObject) представляет объект списка Python.1213**[PyTypeObject](https://python-all.ru/2.7/c-api/type.html#c.PyTypeObject) `PyList_Type`**1415Этот экземпляр [`PyTypeObject`](https://python-all.ru/2.7/c-api/type.html#c.PyTypeObject) представляет тип Python list. Это тот же объект, что и `list` на уровне Python.1617#### `int PyList_Check(PyObject *p)`1819Возвращает истину, если *p* является объектом списка или экземпляром подтипа типа list.2021Изменено в версии 2.2: Теперь допускаются подтипы.2223#### `int PyList_CheckExact(PyObject *p)`2425Возвращает истину, если *p* является объектом списка, но не экземпляром подтипа типа list.2627Новое в версии 2.2.2829#### `PyObject* PyList_New(Py_ssize_t len)`3031*Возвращаемое значение: новая ссылка.*3233Возвращает новый список длины *len* в случае успеха или *NULL* при неудаче.3435> **Примечание**36>37> Если *len* больше нуля, элементы возвращаемого объекта списка устанавливаются в `NULL`. Поэтому нельзя использовать функции абстрактного API, такие как [`PySequence_SetItem()`](https://python-all.ru/2.7/c-api/sequence.html#c.PySequence_SetItem) или передавать объект коду Python до того, как все элементы будут установлены в реальные объекты с помощью [`PyList_SetItem()`](https://python-all.ru/2.7/c-api/list.html#c.PyList_SetItem).3839Изменено в версии 2.5: Эта функция использовала `int` для *size*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.4041#### `Py_ssize_t PyList_Size(PyObject *list)`4243Возвращает длину объекта списка в *list*; это эквивалентно `len(list)` для объекта списка.4445Изменено в версии 2.5: Эта функция возвращала `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.4647#### `Py_ssize_t PyList_GET_SIZE(PyObject *list)`4849Макроформа [`PyList_Size()`](https://python-all.ru/2.7/c-api/list.html#c.PyList_Size) без проверки ошибок.5051Изменено в версии 2.5: Этот макрос возвращал `int`. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.5253#### `PyObject* PyList_GetItem(PyObject *list, Py_ssize_t index)`5455*Возвращаемое значение: заимствованная ссылка.*5657Возвращает объект в позиции *index* в списке, на который указывает *list*. Позиция должна быть неотрицательной; индексация с конца списка не поддерживается. Если *index* выходит за границы (\<0 или \>=len(list)), возвращается *NULL* и устанавливается исключение [`IndexError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.IndexError).5859Изменено в версии 2.5: Эта функция использовала `int` для *index*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.6061#### `PyObject* PyList_GET_ITEM(PyObject *list, Py_ssize_t i)`6263*Возвращаемое значение: заимствованная ссылка.*6465Макроформа [`PyList_GetItem()`](https://python-all.ru/2.7/c-api/list.html#c.PyList_GetItem) без проверки ошибок.6667Изменено в версии 2.5: Этот макрос использовал `int` для *i*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.6869#### `int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)`7071Устанавливает элемент на индексе *index* в списке в значение *item*. Возвращает `0` в случае успеха. Если *index* выходит за границы, возвращает `-1` и устанавливает исключение [`IndexError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.IndexError).7273> **Примечание**74>75> Эта функция «забирает» ссылку на *item* и отбрасывает ссылку на элемент, уже находящийся в списке на затрагиваемой позиции.7677Изменено в версии 2.5: Эта функция использовала `int` для *index*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.7879#### `void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)`8081Макро-форма [`PyList_SetItem()`](https://python-all.ru/2.7/c-api/list.html#c.PyList_SetItem) без проверки ошибок. Обычно используется только для заполнения новых списков, где нет предыдущего содержимого.8283> **Примечание**84>85> Этот макрос “крадёт” ссылку на *item* и, в отличие от [`PyList_SetItem()`](https://python-all.ru/2.7/c-api/list.html#c.PyList_SetItem), *не* удаляет ссылку на любой заменяемый элемент; любая ссылка в *list* на позиции *i* будет утекать.8687Изменено в версии 2.5: Этот макрос использовал `int` для *i*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.8889#### `int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)`9091Вставляет элемент *item* в список *list* перед индексом *index*. Возвращает `0` при успехе; возвращает `-1` и устанавливает исключение при неудаче. Аналогично `list.insert(index, item)`.9293Изменено в версии 2.5: Эта функция использовала `int` для *index*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.9495#### `int PyList_Append(PyObject *list, PyObject *item)`9697Добавляет объект *item* в конец списка *list*. Возвращает `0` при успехе; возвращает `-1` и устанавливает исключение при неудаче. Аналогично `list.append(item)`.9899#### `PyObject* PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)`100101*Возвращаемое значение: новая ссылка.*102103Возвращает список объектов из *list*, содержащий объекты *между* *low* и *high*. Возвращает *NULL* и устанавливает исключение в случае неудачи. Аналогично `list[low:high]`. Индексация с конца списка не поддерживается.104105Изменено в версии 2.5: Эта функция использовала `int` для *low* и *high*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.106107#### `int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)`108109Устанавливает срез *list* между *low* и *high* равным содержимому *itemlist*. Аналогично `list[low:high] = itemlist`. *itemlist* может быть *NULL*, что означает присваивание пустого списка (удаление среза). Возвращает `0` при успехе, `-1` при неудаче. Индексация с конца списка не поддерживается.110111Изменено в версии 2.5: Эта функция использовала `int` для *low* и *high*. Это может потребовать изменений в вашем коде для корректной поддержки 64-битных систем.112113#### `int PyList_Sort(PyObject *list)`114115Сортирует элементы *list* на месте. Возвращает `0` при успехе, `-1` при неудаче. Эквивалентно `list.sort()`.116117#### `int PyList_Reverse(PyObject *list)`118119Разворачивает элементы *list* на месте. Возвращает `0` при успехе, `-1` при неудаче. Эквивалентно `list.reverse()`.120121#### `PyObject* PyList_AsTuple(PyObject *list)`122123*Возвращаемое значение: новая ссылка.*124125Возвращает новый объект кортежа, содержащий содержимое *list*; эквивалентно `tuple(list)`.126