列表对象¶
-
PyTypeObject
PyList_Type¶ 这是个属于
PyTypeObject的代表Python列表类型的实例。在Python层面和类型list是同一个对象。
-
PyObject*
PyList_New(Py_ssize_t len)¶ - Return value: New reference.
成功时返回长度为 len 的新列表,失败时返回 NULL。
注解
当 len 大于零时,被返回的列表对象项目被设成
NULL。因此你不能用类似C函数PySequence_SetItem()的抽象API或者用C函数PyList_SetItem()将所有项目设置成真实对象前对Python代码公开这个对象。
-
Py_ssize_t
PyList_GET_SIZE(PyObject *list)¶ 宏版本的C函数
PyList_Size(),没有错误检测。
-
PyObject*
PyList_GetItem(PyObject *list, Py_ssize_t index)¶ - Return value: Borrowed reference.
返回* list 指向的列表中位置 index 的對象。这个位置必需是非负,不支持倒叙索引。如果 *index 超出边界 (<0 or >1=len(list)),返回 NULL 并设置
IndexError异常。
-
PyObject*
PyList_GET_ITEM(PyObject *list, Py_ssize_t i)¶ - Return value: Borrowed reference.
宏版本的C函数
PyList_GetItem(),没有错误检测。
-
int
PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)¶ 将列表中索引为 index 的对象设为 item。成功时返回
0,失败时返回-1。注解
此函数会“偷走”一个对 item 的引用并丢弃一个对列表中受影响位置上的已有条目的引用。
-
void
PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)¶ 不带错误检测的宏版本
PyList_SetItem()。 这通常只被用于新列表中之前没有内容的位置进行填充。注解
该宏会“偷走”一个对 item 的引用,但与
PyList_SetItem()不同的是它 不会 丢弃对任何被替换条目的引用;在 list 的 i 位置上的任何引用都将被泄露。
-
int
PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)¶ 将条目 item 插入到列表 list 索引号 index 之前的位置。 如果成功将返回
0;如果不成功则返回-1并设置一个异常。 相当于list.insert(index, item)。
-
int
PyList_Append(PyObject *list, PyObject *item)¶ 将对象 item 添加到列表 list 的末尾。 如果成功将返回
0;如果不成功则返回-1并设置一个异常。 相当于list.append(item)。
-
PyObject*
PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)¶ - Return value: New reference.
返回一个对象列表,包含 list 中位于 low 与 high 之间 的对象。 如果不成功则返回 NULL 并设置一个异常。 相当于
list[low:high]。 在 Python 中进行切片时可使用的负索引号在此则不被支持。
-
int
PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)¶ 将 list 中 low 与 high 之间的切片设为 itemlist 的内容。 相当于
list[low:high] = itemlist。 itemlist 可以为 NULL,表示赋值为一个空列表(删除切片)。 成功时返回0,失败时返回-1。 在 Python 中进行切片时可使用的负索引号在此则不被支持。
-
PyObject*
PyList_AsTuple(PyObject *list)¶ - Return value: New reference.
返回一个新的元组对象,其中包含 list 的内容;等价于
tuple(list)。
-
int
PyList_ClearFreeList()¶ 清空释放列表。 返回所释放的条目数。
3.3 新版功能.
