Modül dersleri (4/4)
Temel yineleme araçları
Python çok sayıda yineleme aracı sunar: bazıları yerleşiktir (her zaman
mevcut), diğerleri standardın itertools modülünde yaşıyor
kütüphane. İşte en önemlileri.
enumerate: dizin + değer
Bir döngü sırasında hem dizine hem de öğeye ihtiyacınız olduğunda:
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: paralel olarak yinele
Birden çok yinelenebilir öğeyi öğe öğe birleştirir:
nomi = ["Ada", "Linus", "Grace"]
eta = [36, 54, 85]
for n, e in zip(nomi, eta):
print(f"{n} ha {e} anni")zip yinelenebilir en kısa yerde durur. "Uzun" zip kullanımı için
itertools.zip_longest.
İki paralel listeden bir söz oluşturmak:
dict(zip(nomi, eta))
# {'Ada': 36, 'Linus': 54, 'Grace': 85}itertools.chain: yinelenebilirleri birleştir
from itertools import chain
list(chain([1, 2], [3, 4], [5]))
# [1, 2, 3, 4, 5]Ara liste oluşturmadan: dosyalar, oluşturucular vb. için kullanışlıdır.
itertools.count ve repeat: sonsuz yineleyiciler
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
Belirli bir öğenin tüm kombinasyonları (tekrarsız, sıradan bağımsız) uzunluk:
from itertools import combinations
list(combinations([1, 2, 3, 4], 2))
# [(1,2), (1,3), (1,4), (2,3), (2,4), (3,4)]Sipariş edilen değişken: permutations. Tekrarlı varyantlar:
combinations_with_replacement ve product.
Sözlükler ve dengesiz yinelenebilirler için Zip()
Yinelenebilir en kısa giriş biter bitmez zip() işlevi durur. Öğeleri eşleştirmek ve fazla değerleri korumak istiyorsanız (bunları None gibi varsayılan bir değerle doldurarak), itertools modülünden zip_longest() kullanabilirsiniz. Ayrıca, anında bir anahtar/değer eşlemesi oluşturmak için bir zip sonucunu doğrudan dict()'ye iletebilirsiniz.
Deneyin
`Ülkeler = ['Italia', 'Francia', 'Spagna']` ve `başkentler = ['Roma', 'Parigi', 'Madrid']` paralel listeleri göz önüne alındığında, `haritalamayı' bir {ülke: başkent} diktesi olarak oluşturun. 'Haritalamayı' değerlendirin.
İpucu göster
dict(zip(ülkeler, başkentler))
3 denemeden sonra çözüm mevcut
Alıştırmayı gözden geçirin
`words = ['ciao', 'mondo', 'python']` göz önüne alındığında, i=1'den başlayarak `enumeated_items'i bir dizi (i, word) listesi olarak oluşturun. "Numaralandırılan_öğeler"i değerlendirin.
İpucu göster
enumerate(words, start=1) → (i, değer) tanımlama grupları.
3 denemeden sonra çözüm mevcut
Ek zorluk
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.
İpucu göster
dict(zip(keys, value)) kullanın ve onu my_dict'e atayın.
3 denemeden sonra çözüm mevcut