列出对象 — Python 文档
来自菜鸟教程
Python/docs/3.7/c-api/list
列出对象
- type PyListObject
- PyObject 的这个子类型表示一个 Python 列表对象。
- PyTypeObject PyList_Type
- PyTypeObject 的这个实例表示 Python 列表类型。 这与 Python 层中的 list 是同一个对象。
- int PyList_Check(PyObject *p)
- 如果 p 是列表对象或列表类型的子类型的实例,则返回 true。
- int PyList_CheckExact(PyObject *p)
- 如果 p 是列表对象,但不是列表类型的子类型的实例,则返回 true。
- PyObject *PyList_New(Py_ssize_t len)
成功时返回长度为 len 的新列表,失败时返回长度为
NULL
的新列表。笔记
如果 len 大于零,则返回的列表对象的项设置为
NULL
。 因此,在使用 PyList_SetItem() 将所有项目设置为真实对象之前,您不能使用抽象 API 函数,例如 PySequence_SetItem() 或将对象暴露给 Python 代码。
- Py_ssize_t PyList_Size(PyObject *list)
- 返回list中列表对象的长度; 这相当于列表对象上的
len(list)
。
- Py_ssize_t PyList_GET_SIZE(PyObject *list)
- PyList_Size() 的宏形式,没有错误检查。
- 返回 list 指向的列表中位置 index 处的对象。 位置必须是非负数; 不支持从列表末尾开始索引。 如果指数超出范围(<0 或 >=len(list)),返回
NULL
并设置一个索引错误例外。
- PyList_GetItem() 的宏形式,没有错误检查。
- int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)
将列表中索引 index 处的项目设置为 item。 成功返回
0
。 如果 index 超出范围,则返回-1
并设置一个 IndexError 异常。笔记
该函数“窃取”对 item 的引用,并丢弃对受影响位置列表中已有项目的引用。
- void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)
PyList_SetItem() 的宏形式,没有错误检查。 这通常仅用于填充没有以前内容的新列表。
笔记
这个宏“窃取”了对 item 的引用,并且与 PyList_SetItem() 不同,not 丢弃对任何被替换项的引用; list 中位于 i 位置的任何引用都将被泄露。
- 将项目item插入到索引index前面的列表list中。 成功返回
0
; 返回-1
并在不成功时设置异常。 类似于list.insert(index, item)
。
- 将对象 item 附加到列表 list 的末尾。 成功返回
0
; 返回-1
并在不成功时设置异常。 类似于list.append(item)
。
- 返回 list 中的对象列表,其中包含 'low 和 high 之间的对象 。 返回
NULL
并在不成功时设置异常。 类似于list[low:high]
。 不支持从列表末尾开始索引。
- 将 low 和 high 之间的 list 切片设置为 itemlist 的内容。 类似于
list[low:high] = itemlist
。 itemlist可以是NULL
,表示分配一个空列表(切片删除)。 成功返回0
,失败返回-1
。 不支持从列表末尾开始索引。
- int PyList_Sort(PyObject *list)
- 将 list 的项目排序到位。 成功返回
0
,失败返回-1
。 这相当于list.sort()
。
- int PyList_Reverse(PyObject *list)
- 将 list 的项目反转到位。 成功返回
0
,失败返回-1
。 这相当于list.reverse()
。
- 返回一个包含 list 内容的新元组对象; 相当于
tuple(list)
。
- int PyList_ClearFreeList()
清除空闲列表。 返回已释放项目的总数。
3.3 版中的新功能。