Содержание страницы
Объекты-итераторы¶Iterator Objects
Python предоставляет два универсальных объекта-итератора. Первый – итератор последовательности – работает с произвольной последовательностью, поддерживающей метод __getitem__(). Второй работает с вызываемым объектом и сигнальным значением: вызываемый объект вызывается для каждого элемента последовательности, а итерация завершается, когда возвращается сигнальное значение.
-
PyTypeObject PySeqIter_Type¶
- Часть Stable ABI.
Объект типа для объектов-итераторов, возвращаемых
PySeqIter_New()и одноаргументной формой встроенной функцииiter()для встроенных типов последовательностей.
-
int PySeqIter_Check(PyObject *op)¶
Возвращает true, если тип op – это
PySeqIter_Type. Эта функция всегда завершается успешно.
-
PyObject *PySeqIter_New(PyObject *seq)¶
- Возвращаемое значение: новая ссылка. Часть Stable ABI.
Возвращает итератор, работающий с произвольным объектом последовательности seq. Итерация завершается, когда последовательность возбуждает исключение
IndexErrorпри операции индексации.
-
PyTypeObject PyCallIter_Type¶
- Часть Stable ABI.
Объект типа для объектов-итераторов, возвращаемых
PyCallIter_New()и dвухаргументной формой встроенной функцииiter().
-
int PyCallIter_Check(PyObject *op)¶
Возвращает true, если тип op – это
PyCallIter_Type. Эта функция всегда завершается успешно.
-
PyObject *PyCallIter_New(PyObject *callable, PyObject *sentinel)¶
- Возвращаемое значение: новая ссылка. Часть Stable ABI.
Возвращает новый итератор. Первый параметр, callable, может быть любым вызываемым объектом Python, который можно вызвать без параметров; каждый его вызов должен возвращать следующий элемент итерации. Когда callable возвращает значение, равное sentinel, итерация завершается.
Объекты диапазона¶Range Objects
-
PyTypeObject PyRange_Type¶
- Часть Stable ABI.
Объект типа для объектов
range.
Встроенные типы итераторов¶Builtin Iterator Types
Это встроенные типы итераций, включённые в C API Python, но не предоставляющие дополнительных функций. Они приведены здесь для полноты.
Тип C |
Тип Python |
|---|---|
|
|
|
|
|
|
|
|
|
Другие объекты-итераторы¶Other Iterator Objects
-
PyTypeObject PyByteArrayIter_Type¶
- Часть Stable ABI.
-
PyTypeObject PyBytesIter_Type¶
- Часть Stable ABI.
-
PyTypeObject PyListIter_Type¶
- Часть Stable ABI.
-
PyTypeObject PyListRevIter_Type¶
- Часть Stable ABI.
-
PyTypeObject PySetIter_Type¶
- Часть Stable ABI.
-
PyTypeObject PyTupleIter_Type¶
- Часть Stable ABI.
-
PyTypeObject PyRangeIter_Type¶
- Часть Stable ABI.
-
PyTypeObject PyLongRangeIter_Type¶
- Часть Stable ABI.
-
PyTypeObject PyDictIterKey_Type¶
- Часть Stable ABI.
-
PyTypeObject PyDictRevIterKey_Type¶
- Часть Stable ABI с версии 3.8.
-
PyTypeObject PyDictIterValue_Type¶
- Часть Stable ABI.
-
PyTypeObject PyDictRevIterValue_Type¶
- Часть Stable ABI с версии 3.8.
-
PyTypeObject PyDictIterItem_Type¶
- Часть Stable ABI.
-
PyTypeObject PyDictRevIterItem_Type¶
- Часть Stable ABI с версии 3.8.
-
PyTypeObject PyODictIter_Type¶
Объекты типа для итераторов различных встроенных объектов.
Не следует создавать экземпляры этих объектов напрямую; вместо этого следует вызывать
PyObject_GetIter().Обратите внимание, что нет гарантии, что конкретный встроенный тип использует определённый тип итератора. Например, итерация по
rangeбудет использовать один из двух типов итераторов в зависимости от размера диапазона. Другие типы могут начать использовать подобную схему в будущем без предупреждения.