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:
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:
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:
dict(zip(nomi, eta))
# {'Ada': 36, 'Linus': 54, 'Grace': 85}itertools.chain: menggabungkan iterable
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
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:
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
Mengingat daftar paralel `negara = ['Italia', 'Francia', 'Spagna']` dan `ibu kota = ['Roma', 'Parigi', 'Madrid']`, buatlah `pemetaan` sebagai dict {negara: ibu kota}. Evaluasi `pemetaan`.
Tunjukkan petunjuk
dict(zip(negara, ibu kota))
Solusi tersedia setelah 3 upaya
Tinjau latihan
Diberikan `words = ['ciao', 'mondo', 'python']`, buat `enumerated_items` sebagai daftar tupel (i, word) mulai dari i=1. Evaluasi `item_yang disebutkan`.
Tunjukkan petunjuk
enumerate(words, start=1) → (i, value) tupel.
Solusi tersedia setelah 3 upaya
Tantangan tambahan
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.
Tunjukkan petunjuk
Gunakan dict(zip(keys, value)) dan tetapkan ke my_dict.
Solusi tersedia setelah 3 upaya