Ana içeriğe geç
Modül 6 · Ders 4 ders 4Kurstaki 24/36~12 min
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:

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: paralel olarak yinele

Birden çok yinelenebilir öğeyi öğe öğe birleştirir:

Python
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:

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

itertools.chain: yinelenebilirleri birleştir

Python
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

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

Belirli bir öğenin tüm kombinasyonları (tekrarsız, sıradan bağımsız) uzunluk:

Python
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

Egzersiz#python.m6.l4.e1
Denemeler: 0Yükleniyor…

`Ü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.

Düzenleyici yükleniyor…
İpucu göster

dict(zip(ülkeler, başkentler))

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#python.m6.l4.e2
Denemeler: 0Yükleniyor…

`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.

Düzenleyici yükleniyor…
İpucu göster

enumerate(words, start=1) → (i, değer) tanımlama grupları.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#python.m6.l4.e3
Denemeler: 0Yükleniyor…

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.

Düzenleyici yükleniyor…
İpucu göster

dict(zip(keys, value)) kullanın ve onu my_dict'e atayın.

3 denemeden sonra çözüm mevcut