Iterator di Python

Iterator di Python

Artikel ini menjelaskan tentang iterator di Python.

YouTube Video

Iterator di Python

Gambaran Umum

Di Python, iterator adalah mekanisme dasar untuk memproses elemen dari koleksi seperti list, tuple, dan dictionary satu per satu.

Apa itu Iterator?

Iterator adalah objek yang dapat mengembalikan elemen satu per satu. Di Python, sebuah objek dianggap sebagai iterator jika memenuhi dua syarat berikut:.

  • Memiliki metode __iter__() yang mengembalikan dirinya sendiri.
  • Memiliki metode __next__() yang mengembalikan elemen berikutnya. Akan menghasilkan StopIteration ketika tidak ada elemen lagi.
1iterator = iter([1, 2, 3])
2print(next(iterator))  # 1
3print(next(iterator))  # 2
4print(next(iterator))  # 3
5# print(next(iterator))  # StopIteration occurs
  • Dalam kode ini, fungsi iter() digunakan untuk mengubah daftar menjadi iterator, dan fungsi next() digunakan untuk mengambil dan menampilkan setiap elemen satu per satu.

Perbedaan dengan Iterable

Iterable adalah objek yang mengimplementasikan metode __iter__() dan dapat digunakan dalam loop for. List dan tuple adalah contoh iterable.

1nums = [10, 20, 30]
2it = iter(nums)  # Get an iterator from the iterable
3print(next(it))  # 10
  • Kode ini merupakan contoh mendapatkan iterator dari iterable seperti daftar dan mengambil elemennya secara berurutan dengan menggunakan next().

Cara memeriksa:

1from collections.abc import Iterable, Iterator
2
3nums = [10, 20, 30]
4it = iter(nums)
5
6print(isinstance(nums, Iterable))  # True
7print(isinstance(nums, Iterator))  # False
8print(isinstance(it, Iterator))    # True
  • Kode ini memastikan bahwa nums adalah iterable tetapi bukan iterator, sedangkan it, yang diperoleh dengan menggunakan iter(nums), adalah sebuah iterator.

Hubungan antara Loop for dan Iterator

Loop for di Python secara internal bekerja sebagai berikut:.

1nums = [1, 2, 3]
2iterator = iter(nums)
3while True:
4    try:
5        value = next(iterator)
6        print(value)
7    except StopIteration:
8        break
  • Seperti yang terlihat, loop for secara implisit menggunakan iterator untuk melakukan iterasi.

Membuat Iterator Kustom

Anda dapat membuat iterator kustom menggunakan kelas.

 1class Countdown:
 2    def __init__(self, start):
 3        self.current = start
 4
 5    def __iter__(self):
 6        return self
 7
 8    def __next__(self):
 9        if self.current <= 0:
10            raise StopIteration
11        value = self.current
12        self.current -= 1
13        return value
14
15for num in Countdown(3):
16    print(num)  # 3, 2, 1
  • Kode ini mendefinisikan iterator kustom yang menghitung mundur menggunakan kelas Countdown dan mencetak angka dari 3 sampai 1 menggunakan loop for.

Perbedaan antara Iterator dan Generator, serta Kapan Menggunakan Masing-Masing

Generator menyediakan fungsi yang mirip dengan iterator. Generator memungkinkan Anda membuat iterator dengan cara yang lebih ringkas.

1def countdown(n):
2    while n > 0:
3        yield n
4        n -= 1
5
6for i in countdown(3):
7    print(i)  # 3, 2, 1
  • Kode ini mendefinisikan fungsi generator yang menghitung mundur menggunakan yield, dan mencetak angka dari 3 sampai 1 menggunakan loop for.

Perbedaan antara Iterator (Kelas) dan Generator (Fungsi)

Terdapat perbedaan berikut antara iterator (kelas) dan generator (fungsi):.

Fitur Iterator (kelas) Generator (fungsi)
Definisi __iter__() + __next__() Fungsi menggunakan yield
Manajemen Status Penanganan atribut secara manual diperlukan Status dikelola secara otomatis
Keterbacaan Dapat menjadi kompleks Sederhana dan jelas
  • Perbedaan Cara Mendefinisikannya Iterator didefinisikan dengan menulis secara manual dua metode: __iter__() dan __next__(). Sebaliknya, generator hanyalah sebuah fungsi yang menggunakan kata kunci yield, sehingga kode menjadi lebih sederhana.

  • Perbedaan dalam Manajemen Status Dengan iterator, Anda harus mengelola status dan kemajuan saat ini secara manual menggunakan variabel. Namun, generator secara otomatis menyimpan statusnya secara internal di Python, sehingga tidak perlu dikelola secara manual.

  • Keterbacaan Kode Iterator cenderung menjadi kompleks karena memerlukan beberapa metode dan manajemen status secara manual. Sebaliknya, generator menggunakan sintaks yang sederhana sehingga mudah dipahami bahkan oleh pemula.

Pustaka Standar untuk Menggunakan Iterator: itertools

itertools, pustaka standar Python, menyediakan alat yang kuat untuk bekerja dengan iterator.

1import itertools
2
3for x in itertools.count(10, 2):  # 10, 12, 14, ...
4    if x > 20:
5        break
6    print(x)
  • Pustaka ini juga mencakup banyak fungsi lain seperti cycle, repeat, chain, islice, dan tee.

Contoh Penggunaan Iterator

Kasus penggunaan iterator meliputi hal-hal berikut:.

  • Memproses Baris File: Membaca baris satu per satu dari sebuah file sebagai sebuah iterator.
  • Pemrosesan Efisien Memori: Memproses data dalam jumlah besar secara berurutan.
  • Mewakili Urutan Tak Hingga: Gunakan fungsi seperti itertools.count().

Ringkasan

  • Iterator adalah objek yang dapat mengambil nilai berikutnya secara berurutan.
  • Anda dapat membuat iterator kustom dengan mendefinisikan __iter__() dan __next__().
  • Iterator akan diproses secara otomatis melalui loop for atau fungsi next().
  • Menggunakan generator atau itertools memungkinkan pemrosesan yang lebih efisien.

Dengan menggunakan iterator, Anda dapat memproses data dalam jumlah besar secara berurutan dengan efisiensi memori, memungkinkan pengelolaan status yang terkontrol dan kinerja program yang lebih baik.

Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.

YouTube Video