Python'da Liste Anlama – Örneklerle
Yayınlanan: 2022-02-18Python'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ı, powerpow
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.

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 birnum
küp haline getirmeniz gerekir. Öyleyse<do-this>
num**3
ile değiştirin. -
<all-items>
: Döngü değişkeninum
—listedeki tek tek sayılardır. -
<this-list>
: Elimizdeki mevcut listenums
. - 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 herauthor
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, tuplei
yinelenebilirlerin her birindeni
öğ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.

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:

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 birTrue
(0-9); yoksaFalse
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 herchar
erişin ve - yeni liste
digits
yalnızca birchar
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ıyorsaTrue
değerini döndürür; yoksaFalse
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.