Python'da iki liste nasıl sıkıştırılır


Çoğu zaman Python’da iki listeyi sıkıştırmak (veya “birleştirmek”) ilginizi çekebilir. Neyse ki zip() işlevini kullanarak bunu yapmak kolaydır.

Bu eğitimde bu işlevin pratik kullanımına ilişkin birkaç örnek gösterilmektedir.

Örnek 1: Eşit uzunluktaki iki listeyi tek bir listeye sıkıştırın

Aşağıdaki sözdizimi, eşit uzunluktaki iki listenin nasıl tek bir listeye sıkıştırılacağını gösterir:

 #define list a and list b
a = ['a', 'b', 'c']
b = [1, 2, 3]

#zip the two lists together into one list
list( zip (a,b))

[('a', 1), ('b', 2), ('c', 3)]

Örnek 2: Eşit uzunluktaki iki listeyi bir sözlüğe sıkıştırın

Aşağıdaki sözdizimi, eşit uzunluktaki iki listenin bir sözlüğe nasıl sıkıştırılacağını gösterir:

 #define list of keys and list of values
keys = ['a', 'b', 'c']
values = [1, 2, 3]

#zip the two lists together into one dictionary
dict( zip (keys, values)) 

{'a': 1, 'b': 2, 'c': 3}

Örnek 3: Eşit olmayan uzunluktaki iki listeyi sıkıştırın

İki listenizin uzunlukları eşit değilse zip() daha kısa olan listenin uzunluğuna göre kısaltılacaktır:

 #define list a and list b
a = ['a', 'b', 'c', 'd']
b = [1, 2, 3]

#zip the two lists together into one list
list( zip (a,b))

[('a', 1), ('b', 2), ('c', 3)]

Zip() fonksiyonunun en kısa listenin uzunluğuna kadar kesilmesini önlemek istiyorsanız, bunun yerine itertools kütüphanesindeki zip_longest() fonksiyonunu kullanabilirsiniz.

Varsayılan olarak bu işlev, eksik değerler için “Yok” seçeneğini doldurur:

 from itertools import zip_longest

#define list a and list b
a = ['a', 'b', 'c', 'd']
b = [1, 2, 3]

#zip the two lists together without truncating to length of shortest list
list( zip_longest (a, b))

[('a', 1), ('b', 2), ('c', 3), ('d', None)]

Ancak kullanılacak farklı bir doldurma değeri belirtmek için dolgu değeri bağımsız değişkenini kullanabilirsiniz:

 #define list a and list b
a = ['a', 'b', 'c', 'd']
b = [1, 2, 3]

#zip the two lists together, using fill value of '0'
list( zip_longest (a, b, fillvalue= 0 ))

[('a', 1), ('b', 2), ('c', 3), ('d', 0)]

Zip_longest() işlevine ilişkin tüm belgeleri burada bulabilirsiniz.

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir