Objetos Iteradores

O Python fornece dois objetos iteradores de propósito geral. O primeiro, um iterador de sequência, trabalha com uma sequência arbitrária suportando o método __getitem__(). O segundo trabalha com um objeto chamável e um valor de sentinela, chamando o chamável para cada item na sequência e finalizando a iteração quando o valor de sentinela é retornado.

PyTypeObject PySeqIter_Type
Parte da ABI Estável.

Objeto de tipo para objetos iteradores retornados por PySeqIter_New() e a forma de um argumento da função embutida iter() para os tipos de sequência embutidos.

int PySeqIter_Check(PyObject *op)

Retorna true se o tipo de op for PySeqIter_Type. Esta função sempre é bem-sucedida.

PyObject *PySeqIter_New(PyObject *seq)
Retorna valor: Nova referência. Parte da ABI Estável.

Retorna um iterador que funcione com um objeto de sequência geral, seq. A iteração termina quando a sequência levanta IndexError para a operação de assinatura.

PyTypeObject PyCallIter_Type
Parte da ABI Estável.

Objeto de tipo para objetos iteradores retornados por PyCallIter_New() e a forma de dois argumentos da função embutida iter().

int PyCallIter_Check(PyObject *op)

Retorna true se o tipo de op for PyCallIter_Type. Esta função sempre é bem-sucedida.

PyObject *PyCallIter_New(PyObject *callable, PyObject *sentinel)
Retorna valor: Nova referência. Parte da ABI Estável.

Retorna um novo iterador. O primeiro parâmetro, callable, pode ser qualquer objeto chamável do Python que possa ser chamado sem parâmetros; cada chamada deve retornar o próximo item na iteração. Quando callable retorna um valor igual a sentinel, a iteração será encerrada.

Objetos intervalo

PyTypeObject PyRange_Type
Parte da ABI Estável.

O objeto tipo para objetos range.

int PyRange_Check(PyObject *o)

Retorna verdadeiro se o objeto op for uma instância de um objeto range. Esta função sempre tem sucesso.

Tipos de iteradores embutidos

Esses são tipos de iteração embutidos que estão incluídos na API C do Python, mas não fornecem funções adicionais. Eles estão aqui para fins de completude.

Tipo em C

Tipo em Python

PyTypeObject PyEnum_Type
Parte da ABI Estável.

enumerate

PyTypeObject PyFilter_Type
Parte da ABI Estável.

filter

PyTypeObject PyMap_Type
Parte da ABI Estável.

map

PyTypeObject PyReversed_Type
Parte da ABI Estável.

reversed

PyTypeObject PyZip_Type
Parte da ABI Estável.

zip

Outros objetos iteradores

PyTypeObject PyByteArrayIter_Type
Parte da ABI Estável.
PyTypeObject PyBytesIter_Type
Parte da ABI Estável.
PyTypeObject PyListIter_Type
Parte da ABI Estável.
PyTypeObject PyListRevIter_Type
Parte da ABI Estável.
PyTypeObject PySetIter_Type
Parte da ABI Estável.
PyTypeObject PyTupleIter_Type
Parte da ABI Estável.
PyTypeObject PyRangeIter_Type
Parte da ABI Estável.
PyTypeObject PyLongRangeIter_Type
Parte da ABI Estável.
PyTypeObject PyDictIterKey_Type
Parte da ABI Estável.
PyTypeObject PyDictRevIterKey_Type
Parte da ABI Estável desde a versão 3.8.
PyTypeObject PyDictIterValue_Type
Parte da ABI Estável.
PyTypeObject PyDictRevIterValue_Type
Parte da ABI Estável desde a versão 3.8.
PyTypeObject PyDictIterItem_Type
Parte da ABI Estável.
PyTypeObject PyDictRevIterItem_Type
Parte da ABI Estável desde a versão 3.8.
PyTypeObject PyODictIter_Type

Objetos de tipo para iteradores de vários objetos embutidos.

Não cria instâncias dessas diretamente; prefira chamar PyObject_GetIter() em vez disso.

Note que não há garantia de que um determinado tipo embutido utilize um determinado tipo de iterador. Por exemplo, iterar sobre um range utilizará um de dois tipos de iterador, dependendo do tamanho do intervalo. Outros tipos podem começar a usar um esquema semelhante no futuro, sem aviso prévio.