Объекты списков¶List Objects
-
PyTypeObject PyList_Type¶
- Часть Stable ABI.
Этот экземпляр
PyTypeObjectпредставляет тип списка Python. Это тот же объект, что иlistв слое Python.
-
int PyList_Check(PyObject *p)¶
Возвращает true, если p является объектом списка или экземпляром подтипа типа списка. Эта функция всегда завершается успешно.
-
int PyList_CheckExact(PyObject *p)¶
Возвращает true, если p является объектом списка, но не экземпляром подтипа типа списка. Эта функция всегда завершается успешно.
-
PyObject *PyList_New(Py_ssize_t len)¶
- Возвращаемое значение: новая ссылка. Часть Stable ABI.
Возвращает новый список длины len в случае успеха или
NULLв случае ошибки.Примечание
Если len больше нуля, элементы возвращаемого объекта списка устанавливаются в
NULL. Поэтому нельзя использовать абстрактные функции API, такие какPySequence_SetItem(), или предоставлять объект коду Python до установки всех элементов в реальный объект с помощьюPyList_SetItem()илиPyList_SET_ITEM(). Следующие API безопасны до полной инициализации списка:PyList_SetItem()иPyList_SET_ITEM().
-
Py_ssize_t PyList_Size(PyObject *list)¶
- Часть Stable ABI.
Возвращает длину объекта списка в list; это эквивалентно
len(list)для объекта списка.
-
Py_ssize_t PyList_GET_SIZE(PyObject *list)¶
Аналогично
PyList_Size(), но без проверки ошибок.
-
PyObject *PyList_GetItemRef(PyObject *list, Py_ssize_t index)¶
- Возвращаемое значение: новая ссылка. Часть Stable ABI начиная с версии 3.13.
Возвращает объект на позиции index в списке, на который указывает list. Позиция должна быть неотрицательной; индексация от конца списка не поддерживается. Если index выходит за границы (
<0 or >=len(list)), возвращаетсяNULLи устанавливается исключениеIndexError.Добавлено в версии 3.13.
-
PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)¶
- Возвращаемое значение: заимствованная ссылка. Часть Stable ABI.
Как
PyList_GetItemRef(), но возвращает заимствованную ссылку вместо сильной ссылки.
-
PyObject *PyList_GET_ITEM(PyObject *list, Py_ssize_t i)¶
- Возвращаемое значение: заимствованная ссылка.
Аналогично
PyList_GetItem(), но без проверки ошибок.
-
int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)¶
- Часть Stable ABI.
Устанавливает элемент на индексе index в списке в значение item. Возвращает
0в случае успеха. Если index выходит за границы, возвращает-1и устанавливает исключениеIndexError.Примечание
Эта функция «крадёт» ссылку на item, даже в случае ошибки. В случае успеха она отбрасывает ссылку на элемент, уже находящийся в списке на соответствующей позиции (если только это не
NULL).
-
void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)¶
Макро-форма
PyList_SetItem()без проверки ошибок. Обычно используется только для заполнения новых списков, где нет предыдущего содержимого.Проверка границ выполняется как утверждение, если Python собран в режиме отладки или
with assertions.Примечание
Этот макрос «крадёт» ссылку на item и, в отличие от
PyList_SetItem(), не отбрасывает ссылку на любой элемент, который заменяется; любая ссылка в list на позиции i будет утеряна (утечка).
-
int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)¶
- Часть Stable ABI.
Вставляет элемент item в список list перед индексом index. Возвращает
0при успехе; возвращает-1и устанавливает исключение при неудаче. Аналогичноlist.insert(index, item).
-
int PyList_Append(PyObject *list, PyObject *item)¶
- Часть Stable ABI.
Добавляет объект item в конец списка list. Возвращает
0при успехе; возвращает-1и устанавливает исключение при неудаче. Аналогичноlist.append(item).
-
PyObject *PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)¶
- Возвращаемое значение: новая ссылка. Часть Stable ABI.
Возвращает список объектов из list, содержащий объекты между low и high. Возвращает
NULLи устанавливает исключение при неудаче. Аналогичноlist[low:high]. Индексация с конца списка не поддерживается.
-
int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)¶
- Часть Stable ABI.
Устанавливает срез list между low и high равным содержимому itemlist. Аналогично
list[low:high] = itemlist. itemlist может бытьNULL, что означает присваивание пустого списка (удаление среза). Возвращает0при успехе,-1при неудаче. Индексация с конца списка не поддерживается.
-
int PyList_Extend(PyObject *list, PyObject *iterable)¶
Расширяет list содержимым iterable. Это то же самое, что
PyList_SetSlice(list, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, iterable)и аналогичноlist.extend(iterable)илиlist += iterable.Вызывает исключение и возвращает
-1, если list не является объектомlist. Возвращает 0 при успехе.Добавлено в версии 3.13.
-
int PyList_Clear(PyObject *list)¶
Удаляет все элементы из list. Это то же самое, что
PyList_SetSlice(list, 0, PY_SSIZE_T_MAX, NULL)и аналогичноlist.clear()илиdel list[:].Вызывает исключение и возвращает
-1, если list не является объектомlist. Возвращает 0 при успехе.Добавлено в версии 3.13.
-
int PyList_Sort(PyObject *list)¶
- Часть Stable ABI.
Сортирует элементы list на месте. Возвращает
0при успехе,-1при неудаче. Эквивалентноlist.sort().
-
int PyList_Reverse(PyObject *list)¶
- Часть Stable ABI.
Разворачивает элементы list на месте. Возвращает
0при успехе,-1при неудаче. Эквивалентноlist.reverse().
-
PyObject *PyList_AsTuple(PyObject *list)¶
- Возвращаемое значение: новая ссылка. Часть Stable ABI.
Возвращает новый объект кортежа, содержащий содержимое list; эквивалентно
tuple(list).