Ana içeriğe geç

Python len(): Python’da Öğeleri Saymaya Yeni Başlayanlar için Kılavuz

Python’daki len() fonksiyonunu kullanarak dizgilerin, listelerin, sözlüklerin ve diğer veri yapılarının boyutunu hızla nasıl bulacağınızı öğrenin. Kendi kodunuzda len() ile çalışırken pratik örnekleri ve kaçınılması gereken yaygın hataları keşfedin.
· 6 dk. oku

Yapay Zeka ile Keşfedin

len() fonksiyonu, Python programcılarının veriyi incelemek için başvurdukları ilk araçlardan biridir. Geliştiriciler için Python’a Giriş kursumuzu ya da Python Programlama Temelleri beceri yolumuzu takip ediyorsanız, len() ile mutlaka karşılaşmışsınızdır.

Bu yazıda, len()’in Python’daki yaygın veri türlerinde nasıl çalıştığını ve işler ters gittiğinde nelere dikkat etmeniz gerektiğini göstereceğim.

Python len() Fonksiyonu Ne Yapar?

Bir şeyin kaç öğe içerdiğini kontrol etmeniz gerektiğinde Python’un yerleşik len() fonksiyonunu kullanabilirsiniz. Bir listedeki öğelerin sayısını ya da bir dizgideki karakterlerin sayısını bulmak gibi. Ayrıca bir sözlükteki anahtarları saymak için de kullanabilirsiniz. Kullanım alanları çok çeşitlidir.

En basit hâliyle şöyle kullanılır:

len(object)

Ölçmek istediğiniz şeyi (yukarıda saydıklarım gibi) object’in yerine koymanız yeterlidir.

len()’i Yaygın Python Veri Türleriyle Kullanma

Yukarıda bazı yaygın kullanım durumlarını listeledim, ancak bunlar biraz soyuttu. len() kullanmanın değerini daha açık hâle getirmek için yaygın örnekler üzerinden gidelim.

Bir dizgideki karakterleri sayma

Diyelim ki bir metnin, boşluklar ve noktalama işaretleri dahil tam uzunluğunu bilmek istiyorsunuz:

word = "Josef"
print(len(word))

Bu, 5 yazdırır; çünkü "Josef" ("f" ile) beş karakterden oluşur.

Bir listedeki öğe sayısını kontrol etme

Bir listenin kaç öğe içerdiğini bulmak isterseniz, şunu kullanın:

numbers = [10, 20, 30, 40, 50]
print(len(numbers))

Burada çıktı olarak 5 görürsünüz.

Bir demetin boyutunu alma

Demetler (tuple), listeler gibi öğeleri bir araya getirir ancak değiştirilemezler; yani oluşturulduktan sonra değiştirilemezler. len() burada da çalışır:

dimensions = (1920, 1080)
print(len(dimensions))

Bu, demet iki öğe tuttuğu için 2 üretir.

Bir sözlükteki anahtarları sayma

Python sözlükleri anahtar-değer çiftlerinden oluşur. Bir sözlükte len() kullandığınızda yalnızca anahtarları sayar:

person = {"name": "Alice", "age": 30, "city": "Paris"}
print(len(person))

Dolayısıyla 3 elde edersiniz (her anahtar için bir tane).

Bir kümedeki benzersiz öğeleri kontrol etme

Kümeler, yalnızca benzersiz öğeleri saklamak istediğinizde kullanışlıdır. len() size şunu söyler:

colors = {"red", "green", "blue", "red"}
print(len(colors))

Bu, "red" iki kez yazılsa da bir kez sayıldığı için 3 döndürür.

len() Kaputun Altında Nasıl Çalışır?

Benim de merak ettiğim gibi, len()’in boyutu aslında nasıl belirlediğini düşünebilirsiniz.

Bir nesne üzerinde len() çağırdığınızda Python, o nesnenin __len__ metodunu arar. Liste, dizgi ve sözlük gibi yerleşik türlerin hepsinde bu metod vardır.

Bunu bilmek bize şunu söyler: Kendi sınıfınızı oluşturur ve onunla len()’in çalışmasını isterseniz, __len__ metodunu kendiniz tanımlamanız gerekir:

class Box:
    def __init__(self, items):
        self.items = items

    def __len__(self):
        return len(self.items)

my_box = Box(["apple", "banana", "orange"])
print(len(my_box))

Burada len() 3 döndürür; çünkü kutu üç öğe içeriyor. Listelerde ve dizgilerde yaptığımız gibi, nesne bir __len__ metodu sunduğu sürece len() uyum sağlar.

len() Çalışmadığında Ne Olur?

Elbette, Python’daki her şeyin bir uzunluğu yoktur. len()’i bunu desteklemeyen bir şey üzerinde kullanmaya çalışırsanız (bir saniye içinde int veri türüyle göstereceğim) Python bir TypeError ile sizi bilgilendirir. Bu, özellikle karışık veri türleriyle çalışırken insanların sıkça karşılaştığı bir durumdur. Örneğin:

num = 42 
print(len(num))

Bu, aşağıdaki hatayı tetikler:

TypeError: object of type 'int' has no len()

Bunu gördüğünüzde, ölçtüğünüz nesnenin gerçekten bir kapsayıcı ya da sıralı tür (dizgi, liste veya sözlük) olduğundan ve bir tamsayı ya da kayan nokta gibi tekil bir değer olmadığından emin olmak için tekrar kontrol edin.

Kullanışlı len() Senaryoları

Örnekleri, gerçek hayattaki programlama durumlarına biraz daha yakın olacak şekilde ele alalım.

range ile döngü kurma

Bir liste üzerinde indislerini kullanarak dolaşmanız gerektiğinde, len() döngünüz için doğru aralığı kurmanıza yardımcı olur:

fruits = ["apple", "banana", "cherry"]

for i in range(len(fruits)):
    print(f"Index {i}: {fruits[i]}")

Bu, her meyveyi indisiyle birlikte yazdırır; size hem sırayı hem de bağlamı verir.

Index 0: apple
Index 1: banana
Index 2: cherry

Boş kapsayıcıları kontrol etme

Çoğu zaman, ilerlemeden önce bir kapsayıcının—örneğin bir listenin veya sözlüğün—boş olup olmadığını bilmek istersiniz:

cart = []

if len(cart) == 0:
    print("Your shopping cart is empty.")

Bu kalıp, üzerinde çalışacak bir şey olmadığında hatalardan ya da gereksiz işlemlerden kaçınmanıza yardımcı olur.

Uzun dizgileri kısaltma

Kullanıcı girdileriyle veya etiketleri görüntülemekle uğraşıyorsanız, dizgi uzunluğunu sınırlamak isteyebilirsiniz. len() bu sınırları uygulamanıza yardımcı olur:

username = "superlongusername"

if len(username) > 10:
    username = username[:10]
    print(username)

Burada, 10 karakterden uzun her kullanıcı adı kısaltılır.

len() ile Yapılan Yaygın Hatalar

len(), Python konusunda biraz deneyiminiz olsa bile sizi ters köşe edebilir:  

  • Tamsayılarda veya kayan noktalılarda len() kullanmaya çalışmak: Sayılar koleksiyon değildir, bu yüzden uzunlukları yoktur.

  • len()’in değerleri değil öğeleri saydığını unutmak: Bir sözlükte len, aynı değere işaret etseler bile anahtarları sayar.

  • len()’in her şeyde çalıştığını varsaymak: Özel sınıfların bir __len__ metoduna ihtiyacı vardır; aksi takdirde len() ne yapacağını bilemez.

Hata ayıklamada zaman kazanmak için bu kuralları aklınızda tutmaya çalışın.

len() ile Hata Yönetimi

len() yanlış kullanıldığında bir TypeError yükseltebileceğinden, özellikle öngörülemeyen verilerle çalışırken kodunuzu bu olasılığa hazırlamak akıllıca olur. try-except bloğu bu tür hataları zarifçe ele almanın basit bir yoludur:

data = 123

try:
    print(len(data))
except TypeError:
    print("Object has no length.")

Programınız çökmek yerine şimdi dostça bir mesaj yazdırır. Bu tür konularda ustalaşmak için Python’da Nesne Yönelimli Programlama kursumuz harika bir kaynaktır. 

len()’i Özel Sınıflarla Kullanma

Özel sınıflara geri dönelim. Özel sınıf, class anahtar sözcüğünü kullanarak kendiniz tanımladığınız herhangi bir sınıftır—programınıza özgü bir şeyi modelliyorsanız, örneğin bir Team, Box veya Library gibi. Daha önce, len()’in listeler ve sözlükler gibi yerleşik türlerde çalıştığını, çünkü __len__() adı verilen özel bir metod uyguladıklarını görmüştünüz. Aynısı kendi sınıflarınız için de geçerlidir. len()’in onlar üzerinde çalışmasını istiyorsanız, __len__()’i kendiniz tanımlamanız gerekir.

Sizi teknik ayrıntılarla boğmaya çalışmıyorum. Bunu anmanın önemli olduğunu düşünüyorum; çünkü yerel Python koleksiyonları gibi davranması gereken özel veri kapsayıcıları oluştururken kritik bir noktadır. len()’i destekleyerek, nesneleriniz diğer fonksiyonlar ve kütüphaneler de dahil olmak üzere Python ekosisteminin geri kalanıyla daha doğal biçimde etkileşime girebilir.

Kısaca tekrar edelim:

class Team:
    def __init__(self, players):
        self.players = players

    def __len__(self):
        return len(self.players)

my_team = Team(["Alice", "Bob", "Cathy"])
print(len(my_team))

Yine len() 3 döndürür; bu da takımınızdaki oyuncu sayısı olduğu için doğru yanıttır.

Sonuç

Python’da bir şeyin boyutunu saymanız, ölçmeniz veya doğrulamanız gerektiğinde, len()’in harika bir seçenek olduğunu unutmayın.

Ancak sona geldiğimize göre başka önemli bir şeyi de anmak istiyorum. Biz tek bir fonksiyona odaklandık, fakat Python’da bir şeyi yapmanın neredeyse her zaman birden fazla yolu vardır. Hatta bir listenin uzunluğunu bulmanın pek çok farklı yolunu gösteren bir makalemiz var ve len() fonksiyonu bunlardan sadece biri: Python List Size: 8 Different Methods for Finding the Length of a List in Python.

Yeni yöntemler üzerinde pratik yapmaya devam edin. Bu, sizi daha güçlü bir programcı yapmanın garantili bir yoludur. Ve Python Programlama beceri yolumuza kaydolmayı unutmayın; kod nasıl optimize edilir, fonksiyonlar ve testler nasıl yazılır ve çok daha fazlasını öğretecek.

Josef Waples

Yazar

Josef Waples

Bilimsel dergilerde yayımlanan araştırma makalelerine katkıları olan bir veri bilimi yazarı ve editörüyüm. Özellikle lineer cebir, istatistik, R ve benzeri konularla ilgileniyorum. Aynı zamanda epey satranç da oynarım! 

Konular

İlgili