Python Itertools: Utilitas Iterasi Berkinerja Tinggi

Pelajari modul itertools Python. Kuasai iterator tak terbatas, kombinasi, permutasi, pengelompokan, dan pemrosesan data hemat memori.

Coba di Editor

Ikhtisar

Modul `itertools` bawaan Python adalah kumpulan alat untuk menangani iterator. Iterator adalah objek yang menghasilkan item secara berurutan, dan `itertools` menyediakan fungsi implementasi C yang sangat optimal yang dapat merangkai, memfilter, mengelompokkan, dan menggabungkan iterator ini. Dengan memanfaatkan alat ini alih-alih menulis loop bersarang dan salinan daftar, Anda dapat mempercepat eksekusi secara signifikan dan mengurangi overhead memori pada pipeline data Anda.

Modul itertools mengkategorikan alatnya menjadi tiga kelompok utama. Yang pertama adalah Iterator Tak Terbatas seperti `count()` (yang menghitung tanpa batas), `cycle()` (yang menggilir koleksi berulang kali), dan `repeat()`. Kedua adalah Iterator Kombinatorik seperti `permutasi()` dan `kombinasi()`, yang sangat berguna untuk pemodelan matematika, pengoptimalan, dan menghasilkan permutasi game. Yang ketiga adalah menghentikan iterator seperti `accumulate()` dan `groupby()`.

Alat yang sangat ampuh adalah `itertools.groupby()`, yang mengelompokkan kunci dan nilai berurutan dalam sebuah iterable. Lainnya adalah `itertools.chain()`, yang menghubungkan beberapa iterable menjadi satu sehingga dapat diproses sebagai satu daftar berkelanjutan tanpa menyalin elemen. Saat bekerja dengan kumpulan data besar, penggunaan itertools memastikan Anda memproses elemen dengan malas—mengevaluasinya hanya saat diperlukan—menghemat memori server dan memaksimalkan throughput.

Kode & Output Eksekusi

Merangkai koleksi dan menghasilkan kombinasi matematika menggunakan itertools.

itertools_demo.py
Coba di Editor
import itertools

# Chaining iterables together
list_a = [1, 2]
list_b = [3, 4]
combined = list(itertools.chain(list_a, list_b))
print(f"Combined via chain: {combined}")

# Generating combinations (choose 2 items out of 3)
items = ["A", "B", "C"]
combos = list(itertools.combinations(items, 2))
print(f"Combinations (2 of 3): {combos}")

# Cycle through a list (limited to prevent infinite loop)
cycler = itertools.cycle(["Red", "Blue"])
cycle_output = [next(cycler) for _ in range(4)]
print(f"Cycle sequence: {cycle_output}")
Keluaran Terminal
Combined via chain: [1, 2, 3, 4]
Combinations (2 of 3): [('A', 'B'), ('A', 'C'), ('B', 'C')]
Cycle sequence: ['Red', 'Blue', 'Red', 'Blue']

Implementasi Langkah demi Langkah

  • Menghasilkan kemungkinan perpindahan atau permutasi kata sandi dalam algoritma
  • Mengelompokkan entri kumpulan data relasional (seperti mengelompokkan transaksi berdasarkan bulan)
  • Membuat antrian melingkar atau putaran berputar dalam permainan

Pertanyaan yang Sering Diajukan

Mengapa itertools meningkatkan kinerja?

Karena fungsinya mengembalikan iterable yang lambat (mengevaluasi item satu per satu) dan ditulis dengan cepat, kode C yang dikompilasi di dalam interpreter Python.

Apa perbedaan antara kombinasi dan permutasi?

Kombinasi mengabaikan urutan (('A', 'B') sama dengan ('B', 'A')), sedangkan permutasi memperlakukan urutan sebagai unik dan mengembalikan kedua pengaturan.

Topik Terkait

Sumber Daya Python yang Direkomendasikan

Perluas pengetahuan Anda dengan tutorial interaktif terkait, lembar contekan, dan perbandingan kode.