Python’da Transpose/Unzip Fonksiyonunu Anlamak
Python’da veri ile çalışırken, genellikle listeleri ve tuple’ları manipüle etmeniz gerekebilir. Yaygın bir işlem, 2 elemanlı tuple’ların bulunduğu bir listeyi iki ayrı listeye dönüştürmektir. Bu, verileri analiz ederken, anahtarları değerlerden ayırmak veya verileri daha kolay manipülasyon için kategorize etmek istediğinizde kritik olabilir.
Problem
Aşağıdaki gibi bir tuple listesinin olduğunu hayal edin:
original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
Amacınız bu listeyi iki ayrı listeye dönüştürmektir:
- Bir liste ilk elemanları içermelidir:
['a', 'b', 'c', 'd']
- İkinci liste ise ikinci elemanları içermelidir:
[1, 2, 3, 4]
Bu işlem, tuple’ların “çözülmesi” veya verinin eksenlerinin değiştirildiği bir transpose fonksiyonu uygulamak olarak tanımlanabilir.
Çözüm
Neyse ki, Python bu konuda yardımcı olabilecek zip
adlı yerleşik bir fonksiyon sunar. Hem Python 2.x hem de Python 3.x’te nasıl kullanılacağını adım adım inceleyelim.
Python 2.x’de zip
Kullanımı
Python 2.x’te, zip
, özel bir operatör olan unpacking operatörü *
uygulandığında kendi tersini işler. İşte bunu orijinal tuple listenize nasıl uygulayabileceğiniz:
result = zip(*original)
# Sonuç şöyle olacaktır: (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
*
operatörü, tuple’ızip
fonksiyonu için ayrı argümanlara açar.- Bu, doğrudan transpoze edilmiş versiyonunuzu size verir.
Python 3.x’de zip
Kullanımı
Python 3.x, zip
‘in davranışını biraz değiştirerek bir liste yerine tembel (lazy) bir iteratör döndürmektedir. Ancak, bu çıktıyı bir listeye dönüştürmek oldukça kolaydır ve Python 2.x ile aynı sonuca ulaşmanızı sağlar. İşte kod:
result = list(zip(*original))
# Sonuç şöyle olacaktır: (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
zip(*original)
ifadesinilist()
ile sarmalayarak, tembel iteratörü kolay kullanım için liste formatına dönüştürüyorsunuz.
Sonuç
Artık Python’da 2 elemanlı tuple listesini transpoze etmeyi veya “çözmeyi” nasıl yapacağınızı iyi bir şekilde anladınız! Python 2.x veya 3.x ile çalışıyor olsanız da, unpacking operatörü ile birleştirildiğinde zip
fonksiyonu, verileri daha kolay manipülasyon için ayırmak üzere şık bir çözüm sunar.
Bu yöntemi Python projelerinize dahil ederek daha temiz ve verimli kod yazmaktan çekinmeyin. İyi kodlamalar!