Python'da Aynı Anda Sıralı Veri Yapılarını Döngüye Almak
Aynı anda birden fazla sıralı veri yapısını
döngüye almak için
zip fonksiyonu kullanılabilir.
Bu durumda, tüm sıralı veri yapılarının
elemanları, aynı indekse sahip elemanlardan
oluşan demetler (tuple) halinde
yazdırılacaktır.
Örnek
Elimizde iki liste olduğunu varsayalım:
lst1 = ['a', 'b', 'c']
lst2 = [1, 2, 3]
Şimdi bu elemanları çiftler halinde yazdıralım:
for el in zip(lst1, lst2):
print(el)
Kodun çalıştırılması sonucu:
('a', 1)
('b', 2)
('c', 3)
Örnek
Farklı türdeki sıralı veri yapıları da
döngüye alınabilir. Bir küme (set) ve bir demeti (tuple)
zip fonksiyonu ve döngüden geçirelim:
st = {'a', 'b', 'c'}
tlp = (1, 2, 3)
for el in zip(st, tlp):
print(el)
Kodun çalıştırılması sonucu:
('a', 1)
('b', 2)
('c', 3)
Örnek
Eğer bir sıralı veri yapısının uzunluğu ikincisinden daha büyükse, döngüleme daha kısa olanın elemanları bitene kadar devam eder:
lst1 = ['a', 'b', 'c', 'd', 'e']
lst2 = [1, 2, 3, 4]
for el in zip(lst1, lst2):
print(el)
Kodun çalıştırılması sonucu:
('a', 1)
('b', 2)
('c', 3)
('d', 4)
Örnek
zip fonksiyonu kullanılarak
üç sıralı veri yapısı da döngüye alınabilir.
Bunun için fonksiyonun parametresinde
hepsini virgülle ayırarak yazıyoruz:
lst1 = ['a1', 'b1', 'c1']
lst2 = ['a2', 'b2', 'c2']
lst3 = ['a3', 'b3', 'c3']
for el in zip(lst1, lst2, lst3):
print(el)
Kodun çalıştırılması sonucu:
('a1', 'a2', 'a3')
('b1', 'b2', 'b3')
('c1', 'c2', 'c3')
Pratik Görevler
İki liste verilmiştir:
tst1 = [1, 3, 5]
tst2 = [2, 4, 6]
Elemanlarını çiftler halinde demet olarak yazdırın.
İki liste verilmiştir:
tst1 = ['a', 'b', 'c']
tst2 = ['d', 'e', 'f']
Bunlardan aşağıdaki listeyi elde edin:
['a', '1', 'b', '2', 'c', '3']
Üç liste verilmiştir:
tst1 = [11, 12, 13, 14]
tst2 = [21, 22, 23, 24]
tst3 = [31, 32, 33, 34]
Bu listelerin karşılık gelen elemanlarını toplayın ve sonucu yeni bir listeye yazın. Toplama işlemi aşağıdaki şekilde yapılacaktır:
[
11 + 21 + 31,
12 + 22 + 32,
13 + 23 + 33,
14 + 24 + 34,
]