Python'da Anlamaları Listeleme

List Comprehensions Python



Liste kavramaları genellikle Python'da, yinelenebilir bir nesne üzerinde döngü yaparak yeni bir liste veya sözlük oluşturan tek satırlı ifadeler yazmak için kullanılır. Bu makale, Python'da for döngülerinin nasıl çalıştığına dair temel bir açıklama ile başlayarak Python'da liste kavrayışlarının nasıl kullanılacağını açıklayacaktır.

Python'da Döngü İçin

Python'daki bir for döngüsü ifadesi, herhangi bir nesnenin, listenin, dizenin vb. üyeleri üzerinde sırayla yinelenir. Diğer programlama dilleriyle karşılaştırıldığında, sözdizimi çok daha temizdir ve yineleme adımlarını manuel olarak tanımlamayı ve yinelemeyi başlatmayı gerektirmez. Davranışını diğer programlama dilleriyle aynı hale getirmenin yolları olsa da (bu makalede ele alınmayacaktır). Ayrıca, devam, break, pass vb. gibi ifadeleri kullanarak for döngüleri üzerinde biraz kontrol uygulayabilirsiniz. Aşağıda Python'da basit bir for döngüsü örneği verilmiştir:







içinxiçinde Aralık(10):
Yazdır(x)

Yukarıdaki for döngüsü, 0'dan başlayan ve 9 ile biten on sayı yazdıracaktır.



Anlamaları Listeleme

Liste anlama, tek satırlık bir ifadede döngüler için çok satırlı yazmanın kısa/özlü bir yolundan başka bir şey değildir. Aşağıdaki liste anlama örneği, tüm x değerlerini dahil ederek [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] şeklinde yeni bir liste oluşturacaktır.



sayılar= [xiçinxiçinde Aralık(10)]
Yazdır (sayılar)

Liste kavrayışının her zaman yeni bir liste oluşturduğunu ve ifadede kullanılan orijinal yinelemeleri değiştirmediğini unutmayın. Tipik bir liste anlama ifadesinin bir for maddesine sahip olması gerekir ve bunu if ve else koşullu ifadeleri takip edebilir. Liste kavrayışı kullanılmadan yukarıdaki örnek şu şekilde yazılacaktır:





sayılar= []
içinxiçinde Aralık(10):
sayılar.eklemek(x)

Yazdır (sayılar)

Performans ve Okunabilirlik

Liste anlamaları, döngülerden daha hızlıdır. Ancak, yüz binlerce öğeyi yinelemediğiniz sürece, önemli performans iyileştirmeleri görmezsiniz. Liste anlama, döngüler için yazmanın kısa bir yolunu sağlarken, karmaşık ifadeler kodun okunabilirliğinin zayıf olmasına ve ayrıntı düzeyinin artmasına neden olabilir. Programınız için maksimum performansa ulaşmak mutlak bir gereklilik olmadığı sürece, kodu okunabilir durumda tutmak önemlidir.

Örnek: Liste Anlama Sözdizimini Sözlükler ve Kümelerle Kullanma

Bir python sözlüğü, anahtar/değer çiftlerinde tanımlanan bir öğeler topluluğudur, bir küme ise, yinelemelere izin verilmeyen benzersiz değerler topluluğudur. Liste kavrayışları Python sözlükleri ve kümeleriyle de kullanılabilir. Sözdizimi biraz farklıdır, ifadeyi köşeli parantez içine almak yerine artık kaşlı ayraç kullanmanız gerekecektir. Ayrıca yeni bir liste yerine yeni bir sözlük / set nesnesi alacaksınız.



veri= {'Kent':'New York', 'isim':'John Doe'}

biçimlendirilmiş_veri= {k: v.Başlık() içinile,viçindeveri.öğeler()}

Yazdır (biçimlendirilmiş_veri)

Yukarıdaki örnek, dize değerlerini başlık durumuna dönüştürecek ve çıktısı {'city': 'New York', 'name': 'John Doe'} olacak olan formatted_data adlı yeni bir sözlük oluşturacaktır. Sol taraftaki mevcut sözlük değişkenini belirterek sözlüğü / yerinde ayarı da değiştirebilirsiniz.

veri= {'Kent':'New York', 'isim':'John Doe'}

veri= {k: v.Başlık() içinile,viçindeveri.öğeler()}

Yazdır (veri)

Sözlük anlamaları kullanılmadan kod şöyle görünür:

veri= {'Kent':'New York', 'isim':'John Doe'}

biçimlendirilmiş_veri= {}

içinile,viçindeveri.öğeler():
biçimlendirilmiş_veri[ile] =v.Başlık()

Yazdır (biçimlendirilmiş_veri)

Kümelerde anahtar/değer çifti olmadığından, küme anlama, liste anlama ile aynı şekilde tanımlanabilir. Tek fark, küme parantezlerinin kullanılmasıdır.

Örnek: Liste Kavramasında Çoklu For Döngüleri

Yukarıda bahsedilen liste anlama örneği temeldir ve tek bir for ifadesi kullanır. Aşağıda, çoklu for döngüleri ve koşullu if ifadesi kullanan bir örnek verilmiştir.

sıfatlar= ['Disk', 'Eoan', 'Odak', 'Sanatsal']

hayvanlar= ['Dingo', 'Ermin', 'Çukur', 'Kunduz']

kod adları= [x +''+ veiçinxiçindesıfatlariçinveiçindehayvanlarEğerve.ile başlar(x[0])]

Yazdır (kod adları)

Kod çıktı olarak ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa'] gösterecektir. İki for döngüsü, sıfatların ve hayvan listelerinin üzerinden geçer ve üyeleri, yalnızca her iki kelimenin ilk harfi aynıysa, bir boşluk kullanılarak birleştirilir. Liste kavrayışlarını kullanmadan kod şöyle görünür:

sıfatlar= ['Disk', 'Eoan', 'Odak', 'Sanatsal']
hayvanlar= ['Dingo', 'Ermin', 'Çukur', 'Kunduz']

kod adları= []

içinxiçindesıfatlar:
içinveiçindehayvanlar:
Eğerve.ile başlar(x[0]):
kod adları.eklemek(x +''+ ve)

Yazdır (kod adları)

Örnek: if-else Cümlesi ile Liste Anlama

Aşağıdaki örnek, liste anlamalarında if ve else ifadelerinin kullanımını gösterecektir.

sayı_listesi= [1, 2, 3, 4]
başka bir_liste= [5, 6, 7, 8]

sonuç= [NS Eğer (x + y)%2 == 0 Başka YANLIŞ içinxiçindesayı_listesiiçinveiçindebaşka bir_liste]

Yazdır (sonuç)

İki liste arasında dolaşırken, yukarıdaki liste kavrayışı, eleman çiftinin toplamının eşit olup olmadığını kontrol eder. Yukarıdaki kodu çalıştırmak size çıktı olarak [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] gösterecektir. Liste kavrama kullanılmadan kod şöyle görünür:

sayı_listesi= [1, 2, 3, 4]
başka bir_liste= [5, 6, 7, 8]
sonuç= []

içinxiçindesayı_listesi:
içinveiçindebaşka bir_liste:
Eğer (x + y)%2 == 0:
sonuç.eklemek(NS)
Başka:
sonuç.eklemek(YANLIŞ)

Yazdır (sonuç)

Çözüm

Liste kavrayışları, temiz ve özlü döngü ifadeleri yazmak için güzel bir yol sağlar. Ancak, birden çok döngü ve koşullu ifadeler kullanılıyorsa, bunlar hızla karmaşıklaşabilir ve anlaşılması zor olabilir. Sonunda, bir programcının rahatlık düzeyine gelir, ancak genellikle aşırı stenografi kullanmak yerine açık, okunabilir ve hata ayıklaması kolay kod yazmak iyi bir fikirdir.