列出对象 — Python 文档
来自菜鸟教程
Python/docs/3.6/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 处的对象。 位置必须为正,不支持从列表末尾开始索引。 如果 index 超出范围,则返回 NULL 并设置一个 IndexError 异常。
- PyList_GetItem() 没有错误检查的宏形式。
- int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)
将列表中索引 index 处的项目设置为 项目 。 成功时返回
0
,失败时返回-1
。笔记
此函数“窃取”对 item 的引用,并丢弃对受影响位置列表中已有项目的引用。
- void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)
PyList_SetItem() 没有错误检查的宏形式。 这通常仅用于填充没有以前内容的新列表。
笔记
这个宏“窃取”了对 item 的引用,并且与 PyList_SetItem() 不同, 不 丢弃对任何被替换项的引用; list 中位于 i 位置的任何引用都将被泄露。
- 将项项插入到索引索引前面的列表列表中。 成功返回
0
; 返回-1
并在不成功时设置异常。 类似于list.insert(index, item)
。
- 将对象 item 添加到列表 list 的末尾。 成功返回
0
; 返回-1
并在不成功时设置异常。 类似于list.append(item)
。
- 返回 list 中包含对象 ' low 和 high 之间的对象列表。 返回 NULL 并在不成功时设置异常。 类似于
list[low:high]
。 不支持负索引,如从 Python 切片时。
- 将low和high之间的list切片设置为itemlist的内容。 类似于
list[low:high] = itemlist
。 itemlist可能是NULL,表示分配了一个空列表(切片删除)。 成功返回0
,失败返回-1
。 不支持负索引,如从 Python 切片时。
- int PyList_Sort(PyObject *list)
- 将 列表 的项目排序到位。 成功返回
0
,失败返回-1
。 这相当于list.sort()
。
- int PyList_Reverse(PyObject *list)
- 将 list 的项目反转到位。 成功返回
0
,失败返回-1
。 这相当于list.reverse()
。
- 返回一个包含 list 内容的新元组对象; 相当于
tuple(list)
。
- int PyList_ClearFreeList()
清除空闲列表。 返回已释放项目的总数。
3.3 版中的新功能。