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 itertoolsIterator Tak Terbatas
Iterator ini akan terus berjalan tanpa batas kecuali kamu menghentikannya:
count(start, step): Menghitung tanpa batas mulai dari nilai awalcycle(iterable): Mengulang iterable tanpa batasrepeat(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 iterableislice(iterable, start, stop[, step]): Mengambil irisan dari iteratorzip_longest(*iterables, fillvalue=None): Seperti zip(), tetapi terus berjalan hingga iterable terpanjang habis
Iterator Kombinatorik
product(*iterables, repeat=1): Produk Kartesius dari iterable inputpermutations(iterable, r=None): Semua permutasi yang mungkin dengan panjang rcombinations(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.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Tantangan
MudahBuat 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:
- Menggunakan
itertools.product()untuk menghasilkan semua kombinasi peringkat dan jenis kartu yang mungkin - Menggunakan
itertools.islice()untuk memilih sebagian dari kombinasi tersebut berdasarkan posisi awal dan akhir yang diberikan - Memformat setiap kartu sebagai "Rank of Suit" (misalnya, "Ace of Spades")
- 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
2Membuat Iterator Kustom
Mengimplementasikan __iter__()Mengimplementasikan __next__()Iterator Tak TerbatasLatihan sendiri: Compiler Python online