Jak znaleźć długość listy w Pythonie

Photo of author

By maciekx

W Pythonie lista to uporządkowany zbiór elementów, które mogą reprezentować różnorodne typy danych. Określenie liczby elementów w liście, czyli jej długości, jest kluczową operacją, wykorzystywaną przy różnorodnych zadaniach, jak choćby iterowanie po elementach czy porównywanie z innymi listami.

Metody określania długości listy

Istnieją zasadniczo dwie metody, które pozwalają na ustalenie liczby elementów w liście w języku Python:

1. Wykorzystanie funkcji len()

Najbardziej intuicyjnym podejściem do uzyskania długości listy jest skorzystanie z wbudowanej funkcji len(). Ta funkcja, przyjmując listę jako argument, zwraca liczbę całkowitą reprezentującą ilość elementów w danej liście.

lista = [1, 2, 3, 4, 5]
dlugosc = len(lista)
print(dlugosc)  

Powyższy kod wyświetli 5

2. Wykorzystanie atrybutu __len__()

Alternatywnym sposobem na poznanie długości listy jest odwołanie się do jej atrybutu __len__(). Ten atrybut, obecny w każdym obiekcie kolekcji w Pythonie, również pozwala na uzyskanie liczby elementów.

lista = [1, 2, 3, 4, 5]
dlugosc = lista.__len__()
print(dlugosc)

Powyższy kod także wyświetli 5

Przykłady praktyczne

Poniżej prezentowane są różnorodne zastosowania funkcji len() i atrybutu __len__() w celu ustalenia liczby elementów w listach:

# Pusta lista
lista = []
dlugosc = len(lista)
print(dlugosc)

Powyższy kod wyświetli 0

# Lista liczb
lista = [1, 2, 3, 4, 5]
dlugosc = len(lista)
print(dlugosc)

Powyższy kod wyświetli 5

# Lista ciągów znaków
lista = ["Ala", "ma", "kota"]
dlugosc = len(lista)
print(dlugosc)

Powyższy kod wyświetli 3

# Lista obiektów zdefiniowanych przez użytkownika
class Person:
    def __init__(self, imie, nazwisko):
        self.imie = imie
        self.nazwisko = nazwisko

lista_osob = [Person("Jan", "Kowalski"), Person("Anna", "Nowak")]
dlugosc = len(lista_osob)
print(dlugosc)

Powyższy kod wyświetli 2

Podsumowanie

Określanie liczby elementów w liście w języku Python jest nieskomplikowanym procesem, realizowanym za pomocą funkcji len() lub atrybutu __len__(). Umiejętność ta jest niezbędna w wielu sytuacjach, od iterowania po elementach listy, przez porównywanie list, po sprawdzanie, czy lista jest pusta.

Najczęściej zadawane pytania (FAQ)

1. Na czym polega różnica pomiędzy funkcją len() a atrybutem __len__()?

Funkcja len() to wbudowana funkcja Pythona, która zwraca długość dowolnego obiektu stanowiącego kolekcję, a nie tylko list. Atrybut __len__() jest właściwością obiektów kolekcji, w tym list, i również pozwala na pobranie ich długości.

2. Czy można za pomocą funkcji len() określić długość ciągu znaków?

Tak, funkcja len() może być z powodzeniem stosowana do ciągów znaków, ponieważ ciągi znaków są w Pythonie traktowane jako rodzaj kolekcji.

3. Co się stanie, gdy spróbuję użyć funkcji len() na obiekcie, który nie jest kolekcją?

W takiej sytuacji funkcja len() zwróci błąd TypeError. Próba dostępu do atrybutu __len__() obiektu, który nie jest kolekcją, również skutkuje błędem TypeError.

4. Czy istnieją inne metody obliczania długości listy?

Można również określić długość listy poprzez iterowanie po jej elementach za pomocą pętli for i zliczanie ich. Niemniej jednak funkcja len() i atrybut __len__() są znacznie wydajniejsze i bardziej rekomendowane.

5. W jakich sytuacjach lepiej używać funkcji len(), a kiedy atrybutu __len__()?

Funkcja len() jest bardziej uniwersalna, gdyż może być wykorzystana do obliczania długości dowolnej kolekcji. Atrybut __len__() jest dostępny tylko dla obiektów, które są kolekcjami. Jeśli wiemy na pewno, że operujemy na liście, użycie __len__() może być nieznacznie szybsze.

6. Czy można obliczyć długość listy, która zawiera inne listy?

Tak, funkcja len() w przypadku zagnieżdżonych list zwróci długość listy głównej, uwzględniając podlisty jako elementy. Nie będzie zliczać rekurencyjnie elementów w podlistach.

7. Jak znaleźć długość najdłuższej listy w liście list?

Można to osiągnąć za pomocą funkcji max() i len(). Funkcja len() zwraca długość każdej podlisty, a funkcja max() wybiera wartość maksymalną spośród nich. Przykładowo:

max(len(x) for x in lista_list)

8. Jak znaleźć długość najkrótszej listy w liście list?

Analogicznie, aby znaleźć długość najkrótszej listy w liście list, należy skorzystać z funkcji min() i len(). Przykładowo:

min(len(x) for x in lista_list)

9. Czy da się poznać długość listy bez konieczności tworzenia samej listy?

Tak, można przekazać do funkcji len() generator, a funkcja ta zwróci liczbę elementów w wygenerowanej sekwencji.

10. Czy można obliczyć długość listy w jednej linii kodu?

Tak, można użyć wyrażenia listowego i funkcji len() w pojedynczej linii kodu, np. len([x for x in range(10)]).


newsblog.pl