Funkcja len() w Pythonie jest jednym z najczęściej używanych narzędzi w programowaniu, służącym do uzyskiwania długości różnych obiektów, głównie sekwencji i kolekcji. Odpowiada na pytanie: „ile elementów zawiera dany obiekt?” i działa dla wielu typów danych, nie tylko dla łańcuchów znaków (stringów), ale także list, krotek, słowników oraz obiektów własnych, które wspierają odpowiedni interfejs.
Podstawy działania funkcji len()
len()jest funkcją wbudowaną – nie wymaga żadnego importu, jest dostępna we wszystkich wersjach Pythona;- Składnia –
len(obiekt)
Gdzie obiekt to obiekt, którego długość chcemy poznać.
Typy danych obsługiwane przez len()
len() współpracuje z wieloma typami danych, m.in.:
- Łańcuchy znaków (str) – zwraca liczbę znaków (łącznie ze spacjami, znakami specjalnymi i interpunkcyjnymi);
- Listy – zwraca liczbę elementów w liście. Lista jest dynamiczna, więc długość może się zmieniać podczas wykonywania programu;
- Krotki (tuple) – podobnie jak lista, ale niezmienna –
len()zwraca liczbę elementów w krotce; - Słowniki (dict) – zwraca liczbę par klucz-wartość, każda para liczona jest jako jeden element;
- Zbiory (set, frozenset) – liczy unikatowe elementy w zbiorze.
Przykłady:
print(len("Python")) # 6
print(len([1, 2, 3, 4])) # 4
print(len((10, 20, 30))) # 3
print(len({'a': 1, 'b': 2})) # 2
print(len(set([1, 2, 4, 2]))) # 3
Szczegóły działania i uwagi
- Obiekt, dla którego wywołujemy
len(), musi implementować metodę specjalną__len__()– właśnie poprzez tę metodę Python uzyskuje informację o długości obiektu; - Jeżeli przekażemy obiekt niedozwolony (np. liczbę całkowitą lub wartość None), otrzymamy błąd typu
TypeError; - Dla pustych obiektów (np. pusty string
"", pusta lista[], pusty słownik{}) wynikem zawsze będzie 0.
Typowe zastosowania w praktyce
- Iterowanie po indeksach elementów –
for i in range(len(lista)):
print(i, lista[i])
- Sprawdzanie, czy kolekcja jest pusta –
if len(lista) == 0:
print("Lista jest pusta")
- Dynamiczne operacje na listach (po dodaniu lub usunięciu elementu długość ulega zmianie):
liczby = [10, 20, 30]
print(len(liczby)) # 3
liczby.append(40)
print(len(liczby)) # 4
del liczby[2]
print(len(liczby)) # 3
Obsługa własnych klas z len()
Aby własna klasa działała z funkcją len(), należy zaimplementować w niej metodę __len__():
class Kolekcja:
def __init__(self, elementy):
self.elementy = elementy
def __len__(self):
return len(self.elementy)
k = Kolekcja([1,2,3])
print(len(k)) # 3
len() wywoła tu metodę __len__() zdefiniowaną przez programistę.
len() w bibliotekach zewnętrznych
Funkcja len() działa również na strukturach danych oferowanych przez popularne biblioteki:
- NumPy – tablice numpy mają zdefiniowaną długość jako liczbę elementów w pierwszym wymiarze;
- Pandas – DataFrame i Series również współpracują z
len(), co zwraca liczbę wierszy/elementów.
Najczęstsze błędy i pułapki
- Próba użycia
len()na obiekcie niebędącym kontenerem (np. liczbie całkowitej czy None) zakończy się błędem, - w słownikach liczba zwracana przez
len()to liczba par klucz-wartość, nie osobnych kluczy czy wartości, - uwaga na „liczbę znaków” w stringach: znaki specjalne, spacje, a także znaki spoza ASCII (np. emoji) liczone są pojedynczo, ale znaki złożone (np. niektóre znaki diakrytyczne) mogą zająć więcej miejsca w pamięci niż pojedynczy znak –
len()mimo to zwróci liczbę logicznych znaków.
Podsumowanie kluczowych aspektów
len()jest uniwersalna i szybka – działa na praktycznie wszystkich „kolekcjach” i sekwencjach w Pythonie;- Zwraca liczbę elementów (dla kolekcji) lub znaków (dla stringów);
- Może być używana z własnymi klasami po zdefiniowaniu metody
__len__(); - Jest niezastąpiona w operacjach na dynamicznych strukturach danych oraz podczas pracy ze złożonymi kolekcjami.
Jeśli tylko potrzebujesz dowiedzieć się, ile elementów zawiera jakiś obiekt w Pythonie, Twój pierwszy wybór powinien zawsze paść na len().