Python'da Liste Anlama – Örneklerle

Yayınlanan: 2022-02-18

Python'da liste kavramaları, listeler, dizeler ve demetler gibi mevcut yinelenebilirlerden yeni listeler oluşturmanıza yardımcı olur.

Özlü sözdizimi, yalnızca bir kod satırında yeni listeler oluşturmanıza olanak tanır. Ve bu eğitim size bunu nasıl yapabileceğinizi öğretecek.

Önümüzdeki birkaç dakika içinde şunları öğreneceksiniz:

  • for döngülerini kullanarak yeni bir liste nasıl oluşturulur,
  • Python'da liste kavrayışlarını kullanmak için sözdizimi ve
  • if koşullu ifadeyle liste kavrayışları nasıl değiştirilir.

Ayrıca, liste kavrayışlarını daha iyi anlamanıza yardımcı olacak birkaç örnek de kodlayacaksınız.

Hadi dalalım.

Döngüler İçin Kullanarak Python Listeleri Nasıl Oluşturulur

nums oluşan bir liste numaranız olduğunu varsayalım. Ve nums içindeki tüm sayıların küpünü içeren başka bir liste oluşturmak istiyorsunuz. Python'da bir for döngüsü kullanarak bunu şu şekilde yapacaksınız:

 nums = [2,3,5,7] num_cubes = [] for num in nums: num_cubes.append(num**3) print(num_cubes) # Output [8, 27, 125, 343]

Yukarıdaki kodda, aşağıdaki adımlara sahibiz:

  • num_cubes boş bir liste başlat.
  • Sayılar listesinde nums .
  • Her sayıya erişin ve üs operatörünü kullanarak küpünü hesaplayın: num num**3 .
  • Son olarak, küp değerini num_cubes listesine ekleyin

Not: Python'da, üs alma operatörü ** şu sözdizimiyle kullanılır: num num**pow —sayı, power pow yükseltilir.

Ancak bunu Python'da liste anlama özelliğini kullanarak daha kolay yapabilirsiniz. Sözdizimini öğrenmeye devam edelim.

Python Liste Anlama Sözdizimi

Liste anlama için genel sözdizimi aşağıda gösterilmiştir.

 <new_list> = [<expression> for <item> in <iterable>]

Yukarıdaki sözdizimini ayrıştıralım.

  • Python'da listeler bir çift köşeli parantez [] ile sınırlandırılır; bu nedenle liste anlama ifadesini [] içine almanız gerekir.
  • < <iterable> içindeki < <item> , yinelenebilir bir döngü içinde olduğunuzu belirtir. Listeler, demetler ve dizeler gibi tek tek öğeler arasında dolaşabileceğiniz ve erişebileceğiniz herhangi bir Python nesnesi yinelenebilirdir.
  • <expression> , <iterable> içindeki her <item> için hesaplamak istediğiniz çıktıdır.

Ve bu kulağa basit geliyor, değil mi?

Özünde, yeni bir liste almak için listedeki (veya yinelenebilir herhangi bir öğe) tüm öğeler için bir şeyler yapmak istersiniz.

Bunu kullanarak, aşağıdaki resimde gösterildiği gibi sözdizimini basitleştirebiliriz.

liste-anlama-sözdizimi
Python Liste Anlama Sözdizimi (Yazara göre resim)

Sözdizimini öğrendiğinize göre artık kodlamaya başlama zamanı. Bu örneklerle birlikte takip etmek için Geekflare'nin çevrimiçi Python IDE'sini kullanabilirsiniz. Veya bunları yerel makinenizde çalıştırabilirsiniz.

Python Liste Anlama Örnekleri

Önceki bölümde, nums öğesinden yeni bir num_cubes listesi oluşturdunuz. Liste kavrayışını kullanarak bunu yeniden yazarak başlayalım.

Sayılarla Liste Anlamayı Kullanma

Şimdi basitleştirilmiş söz dizimini aşağıdaki gibi kullanalım:

  • <do-this> : Burada, her bir num küp haline getirmeniz gerekir. Öyleyse <do-this> num**3 ile değiştirin.
  • <all-items> : Döngü değişkeni num —listedeki tek tek sayılardır.
  • <this-list> : Elimizdeki mevcut liste nums .
  • Ve [num**3 for num in nums] son ​​ifadedir.

Hepsini bir araya getirirsek, aşağıdaki kod parçacığına sahibiz:

 num_cubes = [num**3 for num in nums] print(num_cubes) # Output [8, 27, 125, 343]

Tebrikler, ilk liste anlayışınızı kodladınız.

Devam edelim, Python dizeleriyle çalışalım.

Dizelerle Liste Anlamayı Kullanma

Liste authors sahip olduğunuzu varsayalım - aşağıdaki listeyi favori yazarlarınızla yeniden yazabilirsiniz.

 authors = ["jane austen","george orwell","james clear","cal newport"]

Yukarıdaki listede yazarların adlarının nasıl küçük harflerle yazıldığına dikkat edin. Şimdi bunları başlık dosyasında biçimlendirmek ve bunları author_list adlı yeni bir listede saklamak istiyoruz.

Not: Python'da, başlık() dize yöntemi, bir dizeyi argüman olarak kabul eder ve başlık durumunda biçimlendirilmiş dizenin bir kopyasını döndürür. Yani her kelimenin ilk harfi büyük yazılır: First-name Last-name

İşte yapmanız gereken tek şey:

  • authors listesinde dolaşın ve listedeki her author için,
  • dizgenin başlık-büyük harfli bir kopyasını almak için author.title() 'ı arayın.

Ve bunun için Python kodu aşağıda gösterilmiştir:

 authors = ["jane austen","george orwell","james clear","cal newport"] author_list = [author.title() for author in authors] print(author_list) # Output ['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']

Yukarıdaki çıktıda, tüm yazarların adlarının başlık durumunda nasıl biçimlendirildiğini gözlemleyin - istediğimiz buydu.

Liste Anlamayı Birden Çok Listeyle Kullanma

Şimdiye kadar, mevcut bir listeden yeni listeler oluşturmak için liste kavrayışını nasıl kullanacağınızı öğrendiniz. Şimdi birden çok listeden yeni bir liste oluşturmayı öğrenelim.

Örneğin, şu problemi ele alalım: 4 dikdörtgenin uzunluklarını ve genişliklerini içeren iki l_arr ve b_arr var.

Ve bu 4 dikdörtgenin alanını içeren yeni bir liste area oluşturmanız gerekiyor. Unutmayın, area = length * breadth .

 l_arr = [4,5,1,3] b_arr = [2,1,7,9]

Alanı hesaplamak için her iki listeden de ( l_arr ve b_arr ) öğelere ihtiyacınız olacak. Ve bunu Python'un zip() işlevini kullanarak yapabilirsiniz.

Not: Python'da, zip() işlevi, zip(*iterables) sözdizimiyle bağımsız değişken olarak bir veya daha fazla yinelenebilir öğe alır. Daha sonra, tuple i yinelenebilirlerin her birinden i öğesini içerdiği bir tanımlama grubu yineleyicisi döndürür.

Aşağıdaki görüntü bunu ayrıntılı olarak açıklamaktadır. l_arr ve b_arr 4 değeriniz var, bu nedenle indeks aralığı 0 ile 3 arasındadır. Gördüğünüz gibi, Tuple 0 l_arr[0] ve b_arr[0] içerir, Tuple 1 l_arr[1] ve b_arr[1] içerir. b_arr[1] vb.

python-zip-fonksiyonu
Python zip() İşlevi (Yazara göre resim)

Bu nedenle, aşağıda gösterildiği gibi zip(l_arr,b_arr) arasında geçiş yapabilirsiniz:

 area = [l*b for l,b in zip(l_arr,b_arr)] print(area) # Output [8,5,7,27]

Bir sonraki bölümde, bir liste kavrayışı içinde koşullu ifadeleri nasıl kullanacağınızı öğreneceksiniz.

Koşul Sözdizimi ile Python Liste Anlama

Liste anlama için önceki sözdizimini oluşturarak başlayalım.

İşte sözdizimi:

 <new_list> = [<expression> for <item> in <iterable> if <condition>]

Tüm öğeler için <expression> değerini hesaplamak yerine, bunu yalnızca belirli bir <condition> karşılayan öğeler için yapmak istersiniz —nerede, condition := True . Ve bu, gösterildiği gibi basitleştirilmiş bir sözdizimine yol açar:

liste-anlama-koşul-sözdizimi
Koşul Sözdizimi ile Python Liste Anlama (Yazarın resmi)

Bununla, kod örneklerine geçelim.

Koşul Örnekleriyle Python Listesini Anlama

#1. Size “2022'de Python öğreniyorum” dizesi verildi. Bu dizideki tüm rakamların bir listesini almak istiyorsunuz. Peki nasıl yaparsın?

Python'da, <char>.isdigit() , bir <char> karakterine etki eder ve bir True (0-9); yoksa False döndürür.

Aşağıdaki kod parçacığı, str1 dizesindeki tüm rakamların listesini nasıl toplayabileceğinizi gösterir.

 str1 = "I'm learning Python3 in 2022" digits = [char for char in str1 if char.isdigit()] print(digits) # Output ['3', '2', '0', '2', '2']

Yukarıdaki kodda:

  • str1 dizesinde dolaşıyorsunuz,
  • isdigit() yöntemini kullanarak bir rakam olup olmadığını kontrol etmek için her char erişin ve
  • yeni liste digits yalnızca bir char ekleyin.

Başka bir örnek alalım.

#2. Bir meyve listeniz var. Ve b ile başlayan fruits listesindeki tüm meyveleri içeren bir starts_with_b listesi oluşturmak istiyorsunuz. Koşulu yazmak için startswith() yöntemini kullanabilirsiniz.

<str>.startswith('char') , <str> 'char' ile başlıyorsa True değerini döndürür; yoksa False döndürür.

 fruits = ['blueberry','apple','banana','orange','cherry'] starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')] print(starts_with_b) # Output ['blueberry', 'banana']

Yukarıdaki çıktıda beklediğimiz gibi fruits listesinde 'b' ile başlayan iki meyve olan 'blueberry' ve 'banana' elde ediyoruz.

Ve bu, liste anlama konusundaki tartışmamızı tamamlıyor.

Çözüm

Umarım bu eğitim, Python'daki liste kavrayışlarını anlamanıza yardımcı olmuştur.

Özetleyelim:

  • Liste kavrayışını kullanarak yeni bir liste oluşturmak üzere <bu liste> içindeki <tüm öğeler> için [<bunu> kullanabilirsiniz.
  • Ek olarak, if koşullu ifadeyle <bu liste> if <koşul-is-Doğru>] içindeki <tüm öğeler> için [<bunu yap> sözdizimini kullanabilirsiniz.

Ek olarak, birkaç örnek de kodladınız. Bir sonraki adım olarak, liste kavramayı kullanarak liste oluşturmak için mevcut Python döngülerinizden bazılarını yeniden yazmayı deneyebilirsiniz. Mutlu kodlama! Bir sonraki eğitime kadar.

Artık bir listeyi nasıl sözlüğe dönüştüreceğinize bakabilir veya Python'da dosyaları nasıl kullanacağınızı öğrenebilirsiniz.