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 döngüler üzerinde biraz kontrol uygulayabilirsiniz. Aşağıda Python'da basit bir for döngüsü örneği verilmiştir:
aralıktaki x için (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, içindeki tüm "x" değerlerini ekleyerek [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] şeklinde yeni bir liste oluşturacaktır.
sayılar = [aralıktaki x için x (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 ardından "if" ve "else" koşullu ifadeleri gelebilir. Liste kavrayışı kullanılmadan yukarıdaki örnek şu şekilde yazılacaktır:
sayılar = []x aralığında (10) için:
sayılar.ekle(x)
yazdır (sayılar)
Performans ve Okunabilirlik
Liste kavramaları, döngülerden daha hızlıdır. Ancak, yüz binlerce öğeyi yinelemediğiniz sürece, önemli performans iyileştirmeleri görmeyeceksiniz. Liste kavrama, 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 piton 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.
data = "şehir": "new york", "ad": "john doe"formatted_data = k: v.verideki k,v için başlık().öğeler()
yazdır (formatlı_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üğü değiştirebilir / yerinde ayarlayabilirsiniz.
data = "şehir": "new york", "ad": "john doe"veri = k: v.verideki k,v için başlık().öğeler()
yazdır (veri)
Sözlük anlamaları kullanmadan kod şöyle görünür:
data = "şehir": "new york", "ad": "john doe"formatted_data =
veride k, v için.öğeler():
formatted_data[k] = v.Başlık()
yazdır (formatlı_veri)
Kümelerde anahtar/değer çifti olmadığından, küme anlama, liste anlama ile aynı şekilde tanımlanabilir. Tek fark kaşlı ayraçların 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 bir "if" ifadesi kullanan bir örnek verilmiştir.
sıfatlar = ["Disko", "Eoan", "Odak", "Sanatsal"]hayvanlar = ["Dingo", "Ermin", "Fossa", "Kunduz"]
kod adları = [x + " " + x için y, y ise hayvanlarda y için sıfatlarda.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" ve "hayvanlar" listelerini 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 = ["Disko", "Eoan", "Odak", "Sanatsal"]hayvanlar = ["Dingo", "Ermin", "Fossa", "Kunduz"]
kod adları = []
sıfatlarda x için:
hayvanlarda y için:
eğer y.ile başlar(x[0]):
kod adları.ekle(x + " " + y)
yazdır (kod adları)
Örnek: if-else Cümlesi ile Liste Anlama
Aşağıdaki örnek, liste kavramalarında if ve else ifadelerinin kullanımını gösterecektir.
sayı_listesi = [1, 2, 3, 4]başka_liste = [5, 6, 7, 8]
sonuç = [True if (x + y) % 2 == 0 else Sayı_listesindeki x için false, other_list içindeki y için]
yazdır (sonuç)
İki liste arasında dolaşırken, yukarıdaki liste kavrayışı, eleman çiftinin toplamının çift 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_liste = [5, 6, 7, 8]
sonuç = []
sayı_listesindeki x için:
other_list içindeki y için:
if (x + y) % 2 == 0:
sonuç.ekle(Doğru)
Başka:
sonuç.ekle(Yanlış)
yazdır (sonuç)
Sonuç
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ı derecede stenografi kullanmak yerine açık, okunabilir ve hata ayıklaması kolay kod yazmak iyi bir fikirdir.