Iterator

Python (iterator) (sequence iterator) __getitem__() (callable) (sentinel value)

PyTypeObject PySeqIter_Type
ABI .

PySeqIter_New() iter()

int PySeqIter_Check(PyObject *op)

Return true if the type of op is PySeqIter_Type. This function always succeeds.

PyObject *PySeqIter_New(PyObject *seq)
ABI .

Return an iterator that works with a general sequence object, seq. The iteration ends when the sequence raises IndexError for the subscripting operation.

PyTypeObject PyCallIter_Type
ABI .

Type object for iterator objects returned by PyCallIter_New() and the two-argument form of the iter() built-in function.

int PyCallIter_Check(PyObject *op)

Return true if the type of op is PyCallIter_Type. This function always succeeds.

PyObject *PyCallIter_New(PyObject *callable, PyObject *sentinel)
ABI .

Return a new iterator. The first parameter, callable, can be any Python callable object that can be called with no parameters; each call to it should return the next item in the iteration. When callable returns a value equal to sentinel, the iteration will be terminated.

Range

PyTypeObject PyRange_Type
ABI .

range

int PyRange_Check(PyObject *o)

Return true if the object o is an instance of a range object. This function always succeeds.

These are built-in iteration types that are included in Python's C API, but provide no additional functions. They are here for completeness.

These pointers are part of the Stable ABI.

C

Python

PyTypeObject PyEnum_Type

enumerate

PyTypeObject PyFilter_Type

filter

PyTypeObject PyMap_Type

map

PyTypeObject PyReversed_Type

reversed

PyTypeObject PyZip_Type

zip

PyTypeObject PyByteArrayIter_Type
ABI .
PyTypeObject PyBytesIter_Type
ABI .
PyTypeObject PyListIter_Type
ABI .
PyTypeObject PyListRevIter_Type
ABI .
PyTypeObject PySetIter_Type
ABI .
PyTypeObject PyTupleIter_Type
ABI .
PyTypeObject PyRangeIter_Type
ABI .
PyTypeObject PyLongRangeIter_Type
ABI .
PyTypeObject PyDictIterKey_Type
ABI .
PyTypeObject PyDictRevIterKey_Type
ABI 3.8 .
PyTypeObject PyDictIterValue_Type
ABI .
PyTypeObject PyDictRevIterValue_Type
ABI 3.8 .
PyTypeObject PyDictIterItem_Type
ABI .
PyTypeObject PyDictRevIterItem_Type
ABI 3.8 .
PyTypeObject PyODictIter_Type

Do not create instances of these directly; prefer calling PyObject_GetIter() instead.

Note that there is no guarantee that a given built-in type uses a given iterator type. For example, iterating over range will use one of two iterator types depending on the size of the range. Other types may start using a similar scheme in the future, without warning.