192 kez okundu 192 kez okundu
Ara 092017
 
193 kez okundu

Pythonda Liste Kısaltmaları

Liste kısaltmaları (list comprehensions), Python diliyle basit, kolay anlaşılır ve hızlı bir şekilde listeler oluşturmamızı sağlar.

Liste Kısaltmaları

Örneğin 0 ile 10 arasındaki ( 0 ve 10 dahil) tam sayıların karelerini hesaplayıp, sonuçları bir liste haline getirelim.

Bu işlemin en basit yöntemi for döngüsü kullanmaktır.

Aynı listeyi list ve map fonksiyonları kullanarak da oluşturabiliriz:

Üçüncü yöntemimiz ise liste kısaltması kullanmaktır:

Her üç yöntemin sonucu da aynıdır:

Şimdi 5 ile 18 arasındaki (5 ve 18 dahil) sayılarla 2’nin üssünü hesaplayalım:

Sonuçlar aynı:

3 ile 28 arasındaki çift sayılar:

Sonuçlar aynı:

2 ile 24 arasındaki tek sayılar için liste kısaltması:

Sonuçlar:

Kısacası yinelenebilir (iterable) bir nesneden bir liste oluşturmak istediğimizde:

Liste kısaltmamıza filtre uygulamak içinse if anahtar sözcüğünü kullanıyoruz:

Bir önceki yazımda liste kısaltmalarının for döngülerinden ve map() fonksiyonundan daha hızlı çalıştığını belirtmiştim.

Şimdi bu kıyaslamayı basit bir örnek üzerinden kendimiz yapalım. Kıyaslama işleminde bir dekoratör fonksiyonu kullanalım.

Sonuç:

Elbette bu sonuçlar betiği çalıştırdığınız bilgisayarın çalışma hızına da bağlıdır ama, aynı işlemin farklı yöntemlerle uygulanmasının farklı süreler aldığını açıkça görebiliyoruz.

Eğer yazdığınız kodlar çalışma hızına duyarlı ise, kesinlikle liste kısaltması kullanmanızı öneriyorum. Eğer böyle bir kaygınız yoksa ve Python konusunda çok fazla deneyiminiz bulunmuyorsa, for yöntemini kullanın. Böylece map veya liste kısaltmasının içeriğini algılamak için çaba sarfetmenize gerek kalmaz.

Şahsen ben, bu konuda Guido van Rossum’a katılıyorum: Eğer çok özel nedenleriniz yoksa lambda, map, filter ve reduce gibi ek araçlara ihtiyacınız olmayacaktır.

Ahmet Aksoy

Referanslar:

 Bir yanıt bırakın

Bu HTML tagleri ve özellikleri kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

(gerekli)

(gerekli)

%d blogcu bunu beğendi:
Önceki yazıyı okuyun:
Python Dilinde Lambda, Map, Filter ve Reduce

Python Dilinde Lambda, Map, Filter ve Reduce İşler hep Guido van Rossum'un istediği gibi gitseydi, Python dilinde lambda, map, filter...

Kapat