Menu
CoddyTech

Modul Itertools

Pelajaran 8 dari 13 dalam kursus Iterator Python di Coddy.

Module itertools di Python adalah kumpulan alat yang andal, cepat, dan hemat memori untuk bekerja dengan iterator. Module ini menyediakan sekumpulan fungsi yang membuat iterator untuk perulangan dan pemrosesan data yang efisien. Mari kita pelajari beberapa fungsi paling berguna dalam module ini.

Mengimpor itertools

import itertools

Iterator Tak Terbatas

Iterator ini akan terus berjalan tanpa batas kecuali kamu menghentikannya:

  • count(start, step): Menghitung tanpa batas mulai dari nilai awal
  • cycle(iterable): Mengulang iterable tanpa batas
  • repeat(elem, [n]): Mengulang elemen sebanyak n kali, tanpa batas jika n tidak ditentukan

Iterator yang berhenti saat urutan input terpendek habis

  • chain(*iterables): Menggabungkan beberapa iterable
  • islice(iterable, start, stop[, step]): Mengambil irisan dari iterator
  • zip_longest(*iterables, fillvalue=None): Seperti zip(), tetapi terus berjalan hingga iterable terpanjang habis

Iterator Kombinatorik

  • product(*iterables, repeat=1): Produk Kartesius dari iterable input
  • permutations(iterable, r=None): Semua permutasi yang mungkin dengan panjang r
  • combinations(iterable, r): Kombinasi dengan panjang r dalam urutan terurut

Contoh Penggunaan

import itertools

# Menggunakan count
for i in itertools.count(10, 2):
    if i > 20:
        break
    print(i)  # Mencetak 10, 12, 14, 16, 18, 20

# Menggunakan cycle
colors = itertools.cycle(['red', 'green', 'blue'])
for _ in range(6):
    print(next(colors))  # Mencetak red, green, blue, red, green, blue

# Menggunakan chain
numbers = itertools.chain([1, 2, 3], [4, 5, 6])
print(list(numbers))  # Mencetak [1, 2, 3, 4, 5, 6]

# Menggunakan combinations
letters = 'ABCD'
print(list(itertools.combinations(letters, 2)))
# Mencetak [('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), ('C', 'D')]

Module itertools menyediakan lebih banyak fungsi, yang masing-masing dirancang untuk menyelesaikan masalah iterasi tertentu secara efisien. Dengan menggunakan alat-alat ini, kamu dapat menulis kode yang lebih ringkas dan berkinerja lebih baik saat bekerja dengan iterator dan object iterable di Python.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

challenge icon

Tantangan

Mudah

Buat program yang menggunakan module itertools untuk menghasilkan dan memproses rangkaian kartu remi. Program tersebut harus menunjukkan penggunaan fungsi product() dan islice().

Kamu diberi:

  • Dua string input: satu untuk peringkat kartu dan satu untuk jenis kartu, dipisahkan dengan koma
  • Dua bilangan bulat: posisi awal dan akhir untuk pengirisan

Programmu harus:

  1. Menggunakan itertools.product() untuk menghasilkan semua kombinasi peringkat dan jenis kartu yang mungkin
  2. Menggunakan itertools.islice() untuk memilih sebagian dari kombinasi tersebut berdasarkan posisi awal dan akhir yang diberikan
  3. Memformat setiap kartu sebagai "Rank of Suit" (misalnya, "Ace of Spades")
  4. Mencetak setiap kartu yang sudah diformat pada baris baru

Input akan diberikan sebagai berikut:

  • Baris pertama: Peringkat kartu (string yang dipisahkan dengan koma)
  • Baris kedua: Jenis kartu (string yang dipisahkan dengan koma)
  • Baris ketiga: Dua bilangan bulat yang dipisahkan dengan spasi untuk posisi awal dan akhir

Coba sendiri

import itertools

# Baca input
ranks = input().split(',')
suits = input().split(',')
start, stop = map(int, input().split())

# TODO: Tulis kodemu di bawah ini
# Gunakan itertools.product() untuk menghasilkan semua kemungkinan kombinasi ranks dan suits
# Gunakan itertools.islice() untuk memilih sebagian dari kombinasi tersebut
# Format setiap kartu sebagai "Rank of Suit"

# Cetak setiap kartu yang sudah diformat pada baris baru
# print(card)

Semua pelajaran di Iterator Python

Latihan sendiri: Compiler Python online