Lompati ke konten utama
Modul 6 · Pelajaran 4 dari 424/36 dalam kursus~12 min
Pelajaran modul (4/4)

Itertool penting

Python memperlihatkan banyak alat iterasi: beberapa di antaranya bawaan (selalu tersedia), yang lain berada di modul itertools standar perpustakaan. Inilah yang paling penting.

enumerate: indeks + nilai

Saat Anda membutuhkan indeks dan elemen selama satu perulangan:

Python
for i, parola in enumerate(["a", "b", "c"]):
    print(i, parola)
# 0 a
# 1 b
# 2 c

# parte da un altro numero:
for i, parola in enumerate(["a", "b", "c"], start=1):
    print(i, parola)

zip: ulangi secara paralel

Menggabungkan beberapa elemen iterable demi elemen:

Python
nomi = ["Ada", "Linus", "Grace"]
eta = [36, 54, 85]

for n, e in zip(nomi, eta):
    print(f"{n} ha {e} anni")

zip berhenti pada iterable terpendek. Untuk penggunaan zip "panjang". itertools.zip_longest.

Membangun dict dari dua daftar paralel:

Python
dict(zip(nomi, eta))
# {'Ada': 36, 'Linus': 54, 'Grace': 85}

itertools.chain: menggabungkan iterable

Python
from itertools import chain
list(chain([1, 2], [3, 4], [5]))
# [1, 2, 3, 4, 5]

Tanpa membuat daftar perantara: berguna untuk file, generator, dll.

itertools.count dan repeat: iterator tak terbatas

Python
from itertools import count, repeat

# count(start, step) — interi crescenti infiniti
for i in count(10, 2):
    if i > 20: break
    print(i)
# 10, 12, 14, 16, 18, 20

# repeat(x, n) — ripete lo stesso valore n volte (o all'infinito senza n)
list(repeat("ok", 3))   # ['ok', 'ok', 'ok']

itertools.combinations

Semua kombinasi (tanpa pengulangan, tidak bergantung pada urutan) yang diberikan panjang:

Python
from itertools import combinations
list(combinations([1, 2, 3, 4], 2))
# [(1,2), (1,3), (1,4), (2,3), (2,4), (3,4)]

Varian yang dipesan: permutations. Varian dengan pengulangan: combinations_with_replacement dan product.

zip() untuk kamus dan iterable yang tidak seimbang

Fungsi zip() berhenti segera setelah input terpendek yang dapat diubah habis. Jika Anda ingin memasangkan elemen dan menyimpan nilai berlebih (mengisinya dengan nilai default seperti None), Anda dapat menggunakan zip_longest() dari modul itertools. Selain itu, Anda dapat meneruskan hasil zip langsung ke dict() untuk langsung membuat peta nilai kunci.

Cobalah

Latihan#python.m6.l4.e1
Upaya: 0Memuat…

Mengingat daftar paralel `negara = ['Italia', 'Francia', 'Spagna']` dan `ibu kota = ['Roma', 'Parigi', 'Madrid']`, buatlah `pemetaan` sebagai dict {negara: ibu kota}. Evaluasi `pemetaan`.

Memuat editor…
Tunjukkan petunjuk

dict(zip(negara, ibu kota))

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#python.m6.l4.e2
Upaya: 0Memuat…

Diberikan `words = ['ciao', 'mondo', 'python']`, buat `enumerated_items` sebagai daftar tupel (i, word) mulai dari i=1. Evaluasi `item_yang disebutkan`.

Memuat editor…
Tunjukkan petunjuk

enumerate(words, start=1) → (i, value) tupel.

Solusi tersedia setelah 3 upaya

Tantangan tambahan

Latihan#python.m6.l4.e3
Upaya: 0Memuat…

Given two lists `keys = ['a', 'b', 'c']` and `values = [10, 20, 30]`, use `zip` to pair them and convert the result into a dictionary. Store the resulting dictionary in `my_dict` and evaluate it.

Memuat editor…
Tunjukkan petunjuk

Gunakan dict(zip(keys, value)) dan tetapkan ke my_dict.

Solusi tersedia setelah 3 upaya