Python'da Zip İşlevi Nasıl Kullanılır

How Use Zip Function Python



Bu makale, Python'un standart modül kitaplığında bulunan zip işleviyle ilgili bir kılavuzu kapsayacaktır. Bu yöntem, birden çok yinelenebilir nesnenin öğelerini birleştirmenize ve eşleştirmenize olanak tanır. Daha sonra bu çiftler üzerinde daha fazla mantık çalıştırabilirsiniz. Çoğu durumda, bir zip işlevi kullanmak, birden çok iç içe for döngüsü kullanmaktan çok daha verimli ve temizdir.

Zip İşlevi Hakkında

Daha önce belirtildiği gibi, zip işlevi, birden çok yinelenebilir nesnenin öğelerinden çiftler oluşturmak için kullanılır. Zip işlevinin temel sözdizimini ve kullanımını anlamak için aşağıdaki örneği göz önünde bulundurun:







liste1= ['ile', 'B', 'C']
liste2= ['elma', 'top', 'kedi']
sıkıştırılmış= fermuar(liste1,liste2)
Yazdır (liste(sıkıştırılmış))

Yukarıdaki kod örneğindeki ilk iki ifade, bazı öğeleri içeren iki listeyi tanımlar. Ardından, list1 ve list2 değişkenlerini argüman olarak ileterek zip işlevi kullanılır. Bu, zip işlevinin ana sözdizimidir. Öğelerini birleştirmek istediğiniz argümanlar olarak listeleri veya diğer geçerli sıralı yinelenebilirleri iletmeniz yeterlidir. Son olarak, sıkıştırılmış değişkenin çıktısını almak için print ifadesi kullanılır. Yukarıda bahsedilen kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:



[('a', 'elma'), ('b', 'top'), ('c', 'kedi')]

Zip işlevinin bir liste değil, bir zip türü nesne döndürdüğünü unutmayın. Yukarıdaki print ifadesinde gösterildiği gibi, onu yinelenebilir bir türe dönüştürmeniz gerekir.



Basit bir ifadeyle, zip işlevi aynı dizindeki öğeleri iki listeden alır ve bunları bir demet içinde bir çift olarak birleştirir. Böylece liste1'in 0. öğesi liste2'nin 0. öğesi ile birleştirilir, liste1'in 1. öğesi liste2'nin 1. öğesi ile birleştirilir ve bu böyle devam eder. Zip işlevi soldan sağa hareket eder ve eşleştirilmiş öğeleri içeren demet, içinde depolanan öğelerle aynı dizine sahiptir.





Yinelenebilirler Aynı Sayıda Öğeye Sahip Olmadığında Zip Kullanma

Yukarıda belirtilen örnekte, her iki liste de eşit sayıda öğeye sahiptir. Her iki listenin de aynı sayıda öğeye sahip olmadığı bir kodla uğraşıyorsanız, zip işlevi listenin en düşük öğe sayısına sahip son öğesinde duracaktır.

Aşağıdaki örnekte, liste2'nin bir öğeye daha sahip olmasına bakılmaksızın, zip işlevi c öğesinde duracaktır.



liste1= ['ile', 'B', 'C']
liste2= ['elma', 'top', 'kedi', 'oyuncak bebek']
sıkıştırılmış= fermuar(liste1,liste2)
Yazdır (liste(sıkıştırılmış))

Yukarıda bahsedilen kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:

[('a', 'elma'), ('b', 'top'), ('c', 'kedi')]

Zip İşlevini Kullanırken İkiden Fazla Yinelenebilir Kullanabilirsiniz

Genellikle, zip işlevi iki yinelenebilir nesneyi karşılaştırmak için kullanılır. Ancak, zip işlevine bağımsız değişken olarak istediğiniz sayıda yinelenebilir öğe iletebilirsiniz. En kısa listenin son öğesinde durma ilkesi yine de geçerli olacaktır.

liste1= ['ile', 'B', 'C']
liste2= ['elma', 'top', 'kedi', 'oyuncak bebek']
liste3= ['5', '3']
sıkıştırılmış= fermuar(liste1,liste2,liste3)
Yazdır (liste(sıkıştırılmış))

Yukarıda bahsedilen kod örneğini çalıştırdıktan sonra sonuç olarak aşağıdaki çıktıyı almalısınız:

[('a', 'elma', '5'), ('b', 'top', '3')]

Zip Türü Nesnesinden Bireysel Listeler Oluşturma

Zaten bir zip nesneniz varsa, zip işlevi ilk kez çağrıldığında daha önce kullanılan ayrı listeleri yeniden doldurmak için kullanabilirsiniz.

liste1= ['ile', 'B', 'C']
liste2= ['elma', 'top', 'kedi', 'oyuncak bebek']
liste3= ['5', '3']
sıkıştırılmış= fermuar(liste1,liste2,liste3)
l1,l2,l3= fermuar(*sıkıştırılmış)
Yazdır (liste(l1), liste(l2), liste(l3))

Yukarıda bahsedilen kod örneğini çalıştırdıktan sonra sonuç olarak aşağıdaki çıktıyı almalısınız:

['a', 'b'] ['elma', 'top'] ['5', '3']

Yukarıdaki kod örneğinde, zip nesnesi * operatörü kullanılarak söndürülür. Sönük sonuçlar daha sonra orijinal listeler oluşturan başka bir zip işlevine çağrılır. Zip nesnesi ilk kez oluşturulduğunda eşit olmayan uzunluktaki listeler kullanılmışsa, tüm öğeleri orijinal listelere geri alamayabileceğinizi unutmayın.

Öğeleri Yinelenebilir En Uzun Süreden Uzak Tutmak İstediğinizde Zip'i Kullanma

Yukarıdaki birçok örnekte, Zip işlevinin varsayılan olarak en kısa yinelenebilir öğenin son öğesinde durduğunu gözlemlemiş olabilirsiniz. En uzun yinelenebilir öğenin son öğesine ulaşana kadar yinelemeye devam etmesini isterseniz ne olur?

Böyle bir durumda Python'un itertools modülünden zip_longest() yöntemini kullanmanız gerekecektir. Zip işleviyle aynı şekilde çalışır, küçük bir farkla, en uzun yinelenebilir türün son öğesinde durur.

itibaren yineleme araçları içe aktarmakzip_en uzun
liste1= ['ile', 'B', 'C']
liste2= ['elma', 'top', 'kedi', 'oyuncak bebek']
liste3= ['5', '3']
sıkıştırılmış=zip_en uzun(liste1,liste2,liste3)
Yazdır (liste(sıkıştırılmış))

Yukarıda bahsedilen kod örneğini çalıştırdıktan sonra sonuç olarak aşağıdaki çıktıyı almalısınız:

[('a', 'elma', '5'), ('b', 'top', '3'), ('c', 'kedi', Yok), (Yok, 'bebek', Yok) ]

Eksik değerler, Yok türü nesneler olarak doldurulur. Zip_longest yöntemine fazladan bir dolgu değeri argümanı ileterek doldurmak için kendi değerinizi de sağlayabilirsiniz.

itibaren yineleme araçları içe aktarmakzip_en uzun
liste1= ['ile', 'B', 'C']
liste2= ['elma', 'top', 'kedi', 'oyuncak bebek']
liste3= ['5', '3']
sıkıştırılmış=zip_en uzun(liste1,liste2,liste3,dolgu değeri='benim_değerim')
Yazdır (liste(sıkıştırılmış))

Yukarıda bahsedilen kod örneğini çalıştırdıktan sonra sonuç olarak aşağıdaki çıktıyı almalısınız:

[('a', 'elma', '5'), ('b', 'top', '3'), ('c', 'kedi', 'değerim'), ('değerim', 'bebek ', 'benim_değerim')]

Çözüm

Zip işlevi, bazı döngüler ve koşullar ifadeleri kullanılarak öykünebilir. Ancak, gereksiz ayrıntı ve tekrar eden ifadeleri kaldırarak kodun düzenli ve temiz tutulmasına yardımcı olur.