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) ifadesini list() 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!