序列协议¶
-
int
PySequence_Check
(PyObject *o)¶ 如果对象提供序列协议,函数返回
1
,否则返回0
。 请注意它将为具有__getitem__()
方法的 Python 类返回1
,除非它们是dict
的子类,因为在一般情况下无法确定它所支持键类型。 此函数总是会成功执行。
-
Py_ssize_t
PySequence_Size
(PyObject *o)¶ -
Py_ssize_t
PySequence_Length
(PyObject *o)¶ 成功时返回序列中*o*的对象数,失败时返回``-1``. 相当于Python的``len(o)``表达式.
-
PyObject*
PySequence_Concat
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
Return the concatenation of o1 and o2 on success, and NULL on failure. This is the equivalent of the Python expression
o1 + o2
.
-
PyObject*
PySequence_Repeat
(PyObject *o, Py_ssize_t count)¶ - Return value: New reference.
Return the result of repeating sequence object o count times, or NULL on failure. This is the equivalent of the Python expression
o * count
.
-
PyObject*
PySequence_InPlaceConcat
(PyObject *o1, PyObject *o2)¶ - Return value: New reference.
Return the concatenation of o1 and o2 on success, and NULL on failure. The operation is done in-place when o1 supports it. This is the equivalent of the Python expression
o1 += o2
.
-
PyObject*
PySequence_InPlaceRepeat
(PyObject *o, Py_ssize_t count)¶ - Return value: New reference.
Return the result of repeating sequence object o count times, or NULL on failure. The operation is done in-place when o supports it. This is the equivalent of the Python expression
o *= count
.
-
PyObject*
PySequence_GetItem
(PyObject *o, Py_ssize_t i)¶ - Return value: New reference.
Return the ith element of o, or NULL on failure. This is the equivalent of the Python expression
o[i]
.
-
PyObject*
PySequence_GetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ - Return value: New reference.
Return the slice of sequence object o between i1 and i2, or NULL on failure. This is the equivalent of the Python expression
o[i1:i2]
.
-
int
PySequence_SetItem
(PyObject *o, Py_ssize_t i, PyObject *v)¶ 将对象 v 赋值给 o 的第 i 号元素。 失败时会引发异常并返回
-1
;成功时返回0
。 这相当于 Python 语句o[i] = v
。 此函数 不会 改变对 v 的引用。If v is NULL, the element is deleted, however this feature is deprecated in favour of using
PySequence_DelItem()
.
-
int
PySequence_DelItem
(PyObject *o, Py_ssize_t i)¶ 删除对象 o 的第 i 号元素。 失败时返回
-1
。 这相当于 Python 语句del o[i]
。
-
int
PySequence_SetSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2, PyObject *v)¶ 将序列对象 v 赋值给序列对象 o 的从 i1 到 i2 切片。 这相当于 Python 语句
o[i1:i2] = v
。
-
int
PySequence_DelSlice
(PyObject *o, Py_ssize_t i1, Py_ssize_t i2)¶ 删除序列对象 o 的从 i1 到 i2 的切片。 失败时返回
-1
。 这相当于 Python 语句del o[i1:i2]
。
-
Py_ssize_t
PySequence_Count
(PyObject *o, PyObject *value)¶ 返回 value 在 o 中出现的次数,即返回使得
o[key] == value
的键的数量。 失败时返回-1
。 这相当于 Python 表达式o.count(value)
。
-
int
PySequence_Contains
(PyObject *o, PyObject *value)¶ 确定 o 是否包含 value。 如果 o 中的某一项等于 value,则返回
1
,否则返回0
。 出错时,返回-1
。 这相当于 Python 表达式value in o
。
-
Py_ssize_t
PySequence_Index
(PyObject *o, PyObject *value)¶ 返回第一个索引*i*,其中
o[i] == value
.出错时,返回-1
.相当于Python的``o.index(value)``表达式.
-
PyObject*
PySequence_List
(PyObject *o)¶ - Return value: New reference.
Return a list object with the same contents as the sequence or iterable o, or NULL on failure. The returned list is guaranteed to be new. This is equivalent to the Python expression
list(o)
.
-
PyObject*
PySequence_Tuple
(PyObject *o)¶ - Return value: New reference.
Return a tuple object with the same contents as the sequence or iterable o, or NULL on failure. If o is a tuple, a new reference will be returned, otherwise a tuple will be constructed with the appropriate contents. This is equivalent to the Python expression
tuple(o)
.
-
PyObject*
PySequence_Fast
(PyObject *o, const char *m)¶ - Return value: New reference.
Return the sequence or iterable o as a list, unless it is already a tuple or list, in which case o is returned. Use
PySequence_Fast_GET_ITEM()
to access the members of the result. Returns NULL on failure. If the object is not a sequence or iterable, raisesTypeError
with m as the message text.
-
Py_ssize_t
PySequence_Fast_GET_SIZE
(PyObject *o)¶ Returns the length of o, assuming that o was returned by
PySequence_Fast()
and that o is not NULL. The size can also be gotten by callingPySequence_Size()
on o, butPySequence_Fast_GET_SIZE()
is faster because it can assume o is a list or tuple.
-
PyObject*
PySequence_Fast_GET_ITEM
(PyObject *o, Py_ssize_t i)¶ - Return value: Borrowed reference.
Return the ith element of o, assuming that o was returned by
PySequence_Fast()
, o is not NULL, and that i is within bounds.
-
PyObject**
PySequence_Fast_ITEMS
(PyObject *o)¶ Return the underlying array of PyObject pointers. Assumes that o was returned by
PySequence_Fast()
and o is not NULL.请注意,如果列表调整大小,重新分配可能会重新定位items数组.因此,仅在序列无法更改的上下文中使用基础数组指针.
-
PyObject*
PySequence_ITEM
(PyObject *o, Py_ssize_t i)¶ - Return value: New reference.
Return the ith element of o or NULL on failure. Macro form of
PySequence_GetItem()
but without checking thatPySequence_Check()
on o is true and without adjustment for negative indices.