piton

Python'da Anlamaları Listeleme

Python'da Anlamaları Listeleme
Liste kavramaları genellikle Python'da, yinelenebilir bir nesne üzerinde döngü yaparak yeni bir liste veya sözlük oluşturan tek satırlık 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 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.

Linux için En İyi Oyun Konsolu Emülatörleri
Bu makale, Linux için kullanılabilen popüler oyun konsolu öykünme yazılımını listeleyecektir. Öykünme, oyun konsollarının, komut setlerinin ve ilgili ...
Best Linux Distros for Gaming in 2021
The Linux operating system has come a long way from its original, simple, server-based look. This OS has immensely improved in recent years and has no...
Linux'ta oyun oturumunuzu nasıl yakalar ve yayınlarsınız?
Geçmişte oyun oynamak sadece bir hobi olarak görülüyordu, ancak zamanla oyun endüstrisi teknoloji ve oyuncu sayısı açısından büyük bir büyüme gördü. Ç...