# Objek Iterator

Python provides two general-purpose iterator objects. The first, a sequence iterator, works with an arbitrary sequence supporting the `__getitem__()` method. The second works with a callable object and a sentinel value, calling the callable for each item in the sequence, and ending the iteration when the sentinel value is returned.

PyTypeObject PySeqIter_Type
  Part of the Stable ABI.

  Tipe objek untuk objek iterator yang dikembalikan oleh `PySeqIter_New()` dan bentuk satu argumen dari fungsi bawaan `iter()` untuk tipe urutan bawaan.

int PySeqIter_Check(PyObject *op)

  Mengembalikan nilai true jika tipe op adalah `PySeqIter_Type`. Fungsi ini selalu berhasil.

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

  Mengembalikan iterator yang bekerja dengan objek urutan umum, seq. Iterasi berakhir ketika urutan tersebut menghasilkan `IndexError` untuk operasi subskrip.

PyTypeObject PyCallIter_Type
  Part of the Stable ABI.

  Tipe objek untuk objek iterator yang dikembalikan oleh `PyCallIter_New()` dan bentuk dua argumen dari fungsi bawaan `iter()` .

int PyCallIter_Check(PyObject *op)

  Mengembalikan nilai true jika tipe op adalah `PyCallIter_Type`. Fungsi ini selalu berhasil.

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

  Mengembalikan iterator baru. Parameter pertama, callable, dapat berupa objek Python callable apa saja yang bisa dipanggil tanpa parameter; setiap pemanggilan harus mengembalikan butir (item) berikutnya pada iterator. Ketika callable mengembalikan nilai sama dengan sentinel, perulangan akan dihentikan.

## 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.

tipe C | tipe Python
--- | ---

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.

PyTypeObject PyODictIter_Type

  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.