Ітератор об’єктів

Python надає два об’єкти-ітератори загального призначення. Перший, ітератор послідовності, працює з довільною послідовністю, що підтримує метод __getitem__(). Другий працює з викликаним об’єктом і контрольним значенням, викликаючи викликаний об’єкт для кожного елемента в послідовності та закінчуючи ітерацію, коли повертається контрольне значення.

PyTypeObject PySeqIter_Type
Part of the Stable ABI.

Об’єкт типу для об’єктів-ітераторів, які повертає PySeqIter_New(), і форма з одним аргументом вбудованої функції iter() для вбудованих типів послідовностей.

int PySeqIter_Check(PyObject *op)

Повертає true, якщо op має тип PySeqIter_Type. Ця функція завжди успішна.

PyObject *PySeqIter_New(PyObject *seq)
Return value: New reference. Part of the Stable ABI.

Повертає ітератор, який працює з об’єктом загальної послідовності seq. Ітерація завершується, коли послідовність викликає IndexError для операції підписання.

PyTypeObject PyCallIter_Type
Part of the Stable ABI.

Об’єкт типу для об’єктів-ітераторів, що повертаються PyCallIter_New() і формою з двома аргументами вбудованої функції iter().

int PyCallIter_Check(PyObject *op)

Повертає true, якщо тип op PyCallIter_Type. Ця функція завжди успішна.

PyObject *PyCallIter_New(PyObject *callable, PyObject *sentinel)
Return value: New reference. Part of the Stable ABI.

Повернути новий ітератор. Перший параметр, callable, може бути будь-яким викликаним об’єктом Python, який можна викликати без параметрів; кожен виклик має повертати наступний елемент ітерації. Коли callable повертає значення, рівне sentinel, ітерація буде припинена.

Range Objects

PyTypeObject PyRange_Type
Part of the Stable ABI.

The type object for range objects.

int PyRange_Check(PyObject *o)

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

Builtin Iterator Types

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

C type

Python type

PyTypeObject PyEnum_Type
Part of the Stable ABI.

enumerate

PyTypeObject PyFilter_Type
Part of the Stable ABI.

filter

PyTypeObject PyMap_Type
Part of the Stable ABI.

map

PyTypeObject PyReversed_Type
Part of the Stable ABI.

reversed

PyTypeObject PyZip_Type
Part of the Stable ABI.

zip

Other Iterator Objects

PyTypeObject PyByteArrayIter_Type
Part of the Stable ABI.
PyTypeObject PyBytesIter_Type
Part of the Stable ABI.
PyTypeObject PyListIter_Type
Part of the Stable ABI.
PyTypeObject PyListRevIter_Type
Part of the Stable ABI.
PyTypeObject PySetIter_Type
Part of the Stable ABI.
PyTypeObject PyTupleIter_Type
Part of the Stable ABI.
PyTypeObject PyRangeIter_Type
Part of the Stable ABI.
PyTypeObject PyLongRangeIter_Type
Part of the Stable ABI.
PyTypeObject PyDictIterKey_Type
Part of the Stable ABI.
PyTypeObject PyDictRevIterKey_Type
Part of the Stable ABI since version 3.8.
PyTypeObject PyDictIterValue_Type
Part of the Stable ABI.
PyTypeObject PyDictRevIterValue_Type
Part of the Stable ABI since version 3.8.
PyTypeObject PyDictIterItem_Type
Part of the Stable ABI.
PyTypeObject PyDictRevIterItem_Type
Part of the Stable ABI since version 3.8.

Type objects for iterators of various built-in objects.

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.