itertools: Iterator Tak Terbatas dan Terbatas
Gunakan count, cycle, islice, chain, dan zip_longest.
itertools: Iterator Tak Terbatas dan Terbatas adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.
Apa Itu itertools?
itertools adalah modul pustaka standar yang menyediakan blok pembangun iterator yang hemat memori. Semua fungsi mengembalikan iterator, bukan daftar.
import itertools
# count: infinite counter
for i in itertools.islice(itertools.count(10, 2), 5):
print(i, end=" ") # 10 12 14 16 18count()
count(start, step) menghasilkan urutan aritmetika tak terbatas. Selalu gunakan bersama islice atau kondisi penghentian.
import itertools
for n in itertools.count(1, 10):
if n > 40:
break
print(n, end=" ") # 1 11 21 31 41cycle()
cycle(iterable) mengulang objek yang dapat diiterasi tanpa batas.
import itertools
colors = itertools.cycle(["red","green","blue"])
for _ in range(7):
print(next(colors), end=" ")
# red green blue red green blue redrepeat()
repeat(value, times) menghasilkan nilai yang sama sebanyak times kali (tak terbatas jika tidak dicantumkan).
import itertools
print(list(itertools.repeat(42, 4))) # [42, 42, 42, 42]
print(list(map(pow, range(5), itertools.repeat(2))))
# [0, 1, 4, 9, 16]islice()
islice(it, stop) atau islice(it, start, stop, step) mengambil irisan iterator tanpa memuat seluruhnya ke memori.
import itertools
result = list(itertools.islice(range(100), 2, 10, 2))
print(result) # [2, 4, 6, 8]chain()
chain(*iterables) menggabungkan beberapa objek yang dapat diiterasi secara berurutan dari awal hingga akhir menjadi satu iterator.
import itertools
result = list(itertools.chain([1,2], [3,4], [5]))
print(result) # [1, 2, 3, 4, 5]
# chain.from_iterable for a list of iterables:
nested = [[1,2],[3,4]]
print(list(itertools.chain.from_iterable(nested)))zip_longest()
zip_longest menggabungkan objek yang dapat diiterasi dengan panjang berbeda, lalu mengisi nilai yang hilang dengan fillvalue.
import itertools
a = [1, 2, 3]
b = ["a", "b"]
print(list(itertools.zip_longest(a, b, fillvalue=0)))
# [(1, "a"), (2, "b"), (3, 0)]dropwhile() dan takewhile()
takewhile(pred, it) menghasilkan item selama predikat bernilai benar. dropwhile melakukan kebalikannya.
import itertools
nums = [1, 3, 5, 6, 7, 9]
print(list(itertools.takewhile(lambda x: x % 2, nums)))
# [1, 3, 5]
print(list(itertools.dropwhile(lambda x: x % 2, nums)))
# [6, 7, 9]filterfalse()
filterfalse(pred, it) menghasilkan elemen yang predikatnya bernilai False — kebalikan dari filter().
import itertools
evens = list(itertools.filterfalse(lambda x: x%2, range(10)))
print(evens) # [0, 2, 4, 6, 8]starmap()
starmap(func, iterable) menerapkan fungsi pada setiap tupel argumen dari objek yang dapat diiterasi.
import itertools, operator
pairs = [(2,3),(4,5),(1,10)]
result = list(itertools.starmap(operator.mul, pairs))
print(result) # [6, 20, 10]groupby()
groupby(it, key) mengelompokkan elemen berurutan yang memiliki nilai kunci sama. Urutkan objek yang dapat diiterasi terlebih dahulu agar pengelompokan benar.
import itertools
data = sorted([("a",1),("b",2),("a",3)], key=lambda x:x[0])
for key, group in itertools.groupby(data, key=lambda x:x[0]):
print(key, list(group))Pemeriksaan Cepat
Apa yang dihasilkan oleh itertools.chain([1,2], [3,4])?
Ringkasan
itertools menyediakan iterator tak terbatas (count, cycle, repeat), pengambilan irisan (islice), penggabungan (chain, zip_longest), dan penyaringan (takewhile, dropwhile, filterfalse). Semuanya bersifat malas dan hemat memori.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “itertools: Iterator Tak Terbatas dan Terbatas” gratis?
Ya — teks lengkap “itertools: Iterator Tak Terbatas dan Terbatas” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “itertools: Iterator Tak Terbatas dan Terbatas”?
Gunakan count, cycle, islice, chain, dan zip_longest. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Python Academy?
Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “itertools: Iterator Tak Terbatas dan Terbatas” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- itertools: Iterator Tak Terbatas dan Terbatas
- itertools: Kombinatorika
- functools: partial dan reduce
- functools: lru_cache dan cached_property