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