Sequence Protocol¶
- int
PySequence_Check
(PyObject *o)¶ Return
1
if the object provides the sequence protocol, and0
otherwise.Note that it returns1
for Python classes with a__getitem__()
method, unless they aredict
subclasses, since in general itis impossible to determine what type of keys the class supports. Thisfunction always succeeds.
- Py_ssize_t
PySequence_Size
(PyObject *o)¶ - Py_ssize_t
PySequence_Length
(PyObject *o)¶ Returns the number of objects in sequenceo on success, and
-1
onfailure. This is equivalent to the Python expressionlen(o)
.
- PyObject*
PySequence_Concat
(PyObject *o1,PyObject *o2)¶ - Return value: New reference.
Return the concatenation ofo1 ando2 on success, and
NULL
on failure.This is the equivalent of the Python expressiono1+o2
.
- PyObject*
PySequence_Repeat
(PyObject *o,Py_ssize_t count)¶ - Return value: New reference.
Return the result of repeating sequence objectocount times, or
NULL
onfailure. This is the equivalent of the Python expressiono*count
.
- PyObject*
PySequence_InPlaceConcat
(PyObject *o1,PyObject *o2)¶ - Return value: New reference.
Return the concatenation ofo1 ando2 on success, and
NULL
on failure.The operation is donein-place wheno1 supports it. This is the equivalentof the Python expressiono1+=o2
.
- PyObject*
PySequence_InPlaceRepeat
(PyObject *o,Py_ssize_t count)¶ - Return value: New reference.
Return the result of repeating sequence objectocount times, or
NULL
onfailure. The operation is donein-place wheno supports it. This is theequivalent of the Python expressiono*=count
.
- PyObject*
PySequence_GetItem
(PyObject *o,Py_ssize_t i)¶ - Return value: New reference.
Return theith element ofo, or
NULL
on failure. This is the equivalent ofthe Python expressiono[i]
.
- PyObject*
PySequence_GetSlice
(PyObject *o,Py_ssize_t i1,Py_ssize_t i2)¶ - Return value: New reference.
Return the slice of sequence objecto betweeni1 andi2, or
NULL
onfailure. This is the equivalent of the Python expressiono[i1:i2]
.
- int
PySequence_SetItem
(PyObject *o,Py_ssize_t i,PyObject *v)¶ Assign objectv to theith element ofo. Raise an exceptionand return
-1
on failure; return0
on success. Thisis the equivalent of the Python statemento[i]=v
. This functiondoesnot steal a reference tov.Ifv is
NULL
, the element is deleted, but this feature isdeprecated in favour of usingPySequence_DelItem()
.
- int
PySequence_DelItem
(PyObject *o,Py_ssize_t i)¶ Delete theith element of objecto. Returns
-1
on failure. This is theequivalent of the Python statementdelo[i]
.
- int
PySequence_SetSlice
(PyObject *o,Py_ssize_t i1,Py_ssize_t i2,PyObject *v)¶ Assign the sequence objectv to the slice in sequence objecto fromi1 toi2. This is the equivalent of the Python statement
o[i1:i2]=v
.
- int
PySequence_DelSlice
(PyObject *o,Py_ssize_t i1,Py_ssize_t i2)¶ Delete the slice in sequence objecto fromi1 toi2. Returns
-1
onfailure. This is the equivalent of the Python statementdelo[i1:i2]
.
- Py_ssize_t
PySequence_Count
(PyObject *o,PyObject *value)¶ Return the number of occurrences ofvalue ino, that is, return the numberof keys for which
o[key]==value
. On failure, return-1
. This isequivalent to the Python expressiono.count(value)
.
- int
PySequence_Contains
(PyObject *o,PyObject *value)¶ Determine ifo containsvalue. If an item ino is equal tovalue,return
1
, otherwise return0
. On error, return-1
. This isequivalent to the Python expressionvalueino
.
- Py_ssize_t
PySequence_Index
(PyObject *o,PyObject *value)¶ Return the first indexi for which
o[i]==value
. On error, return-1
. This is equivalent to the Python expressiono.index(value)
.
- PyObject*
PySequence_List
(PyObject *o)¶ - Return value: New reference.
Return a list object with the same contents as the sequence or iterableo,or
NULL
on failure. The returned list is guaranteed to be new. This isequivalent to the Python expressionlist(o)
.
- PyObject*
PySequence_Tuple
(PyObject *o)¶ - Return value: New reference.
Return a tuple object with the same contents as the sequence or iterableo,or
NULL
on failure. Ifo is a tuple, a new reference will be returned,otherwise a tuple will be constructed with the appropriate contents. This isequivalent to the Python expressiontuple(o)
.
- PyObject*
PySequence_Fast
(PyObject *o, const char *m)¶ - Return value: New reference.
Return the sequence or iterableo as an object usable by the other
PySequence_Fast*
family of functions. If the object is not a sequence oriterable, raisesTypeError
withm as the message text. ReturnsNULL
on failure.The
PySequence_Fast*
functions are thus named because they assumeo is aPyTupleObject
or aPyListObject
and accessthe data fields ofo directly.As a CPython implementation detail, ifo is already a sequence or list, itwill be returned.
- Py_ssize_t
PySequence_Fast_GET_SIZE
(PyObject *o)¶ Returns the length ofo, assuming thato was returned by
PySequence_Fast()
and thato is notNULL
. The size can also beretrieved by callingPySequence_Size()
ono, butPySequence_Fast_GET_SIZE()
is faster because it can assumeo is alist or tuple.
- PyObject*
PySequence_Fast_GET_ITEM
(PyObject *o,Py_ssize_t i)¶ - Return value: Borrowed reference.
Return theith element ofo, assuming thato was returned by
PySequence_Fast()
,o is notNULL
, and thati is within bounds.
- PyObject**
PySequence_Fast_ITEMS
(PyObject *o)¶ Return the underlying array of PyObject pointers. Assumes thato was returnedby
PySequence_Fast()
ando is notNULL
.Note, if a list gets resized, the reallocation may relocate the items array.So, only use the underlying array pointer in contexts where the sequencecannot change.
- PyObject*
PySequence_ITEM
(PyObject *o,Py_ssize_t i)¶ - Return value: New reference.
Return theith element ofo or
NULL
on failure. Faster form ofPySequence_GetItem()
but without checking thatPySequence_Check()
ono is true and without adjustment for negativeindices.