Kurs
Die Funktion len()
ist eines der ersten Werkzeuge, auf die Python-Programmierer/innen zurückgreifen, um Daten zu untersuchen. Wenn du unseren Kurs "Einführung in Python für Entwickler" oder unseren Lernpfad "Grundlagen der Python-Programmierung " durcharbeitest, wirst du sicher auf len()
gestoßen sein.h
In diesem Artikel zeige ich dir, wie len()
in Python für alle gängigen Datentypen funktioniert, und ich zeige dir, worauf du achten musst, wenn etwas schief läuft.
Was macht die Python-Funktion len()?
Du kannst die in Python eingebaute Funktion len()
verwenden, wenn du wissen willst, wie viele Elemente etwas enthält. Ich denke dabei an das Zählen der Anzahl der Elemente in einer Liste oder an das Zählen der Anzahl der Zeichen in einer Zeichenkette. Du kannst sie auch verwenden, um die Schlüssel in einem Wörterbuch zu zählen. Es gibt alle möglichen Arten von Verwendungen.
Hier siehst du, wie du sie in ihrer grundlegendsten Form verwendest:
len(object)
Setze einfach das, was du messen willst (wie die Dinge, die ich oben aufgeführt habe), an die Stelle von object
.
Verwendung von len() mit gängigen Python-Datentypen
Ich habe oben einige häufige Anwendungsfälle aufgelistet, aber sie waren alle ein wenig abstrakt. Gehen wir gängige Beispiele durch, um den Nutzen von len()
zu verdeutlichen.
Zählen von Zeichen in einer Zeichenkette
Angenommen, du willst die genaue Länge eines Textes wissen, einschließlich aller Leerzeichen und Satzzeichen:
word = "Josef"
print(len(word))
Dies gibt 5
aus, da das Wort "Josef"
(mit einem "f") aus fünf Zeichen besteht.
Prüfen der Anzahl der Elemente in einer Liste
Wenn du herausfinden willst, wie viele Einträge eine Liste enthält, kannst du dies verwenden:
numbers = [10, 20, 30, 40, 50]
print(len(numbers))
Hier siehst du 5
als Ausgabe.
Die Größe eines Tupels ermitteln
Tupel gruppieren, ähnlich wie Listen, Elemente, sind aber unveränderlich, d.h. sie können nach der Erstellung nicht mehr geändert werden. len()
funktioniert auch hier:
dimensions = (1920, 1080)
print(len(dimensions))
Dies ergibt 2
, da das Tupel zwei Elemente speichert.
Zählen der Schlüssel in einem Wörterbuch
In Python-Wörterbüchern dreht sich alles um Schlüssel-Wert-Paare. Wenn du len()
für ein Wörterbuch verwendest, zählt es nur die Schlüssel:
person = {"name": "Alice", "age": 30, "city": "Paris"}
print(len(person))
Du bekommst also 3
(eine für jeden Schlüssel).
Eindeutige Elemente in einer Menge prüfen
Sets sind praktisch, wenn du nur einmalige Gegenstände aufbewahren willst. len()
wird dir das sagen:
colors = {"red", "green", "blue", "red"}
print(len(colors))
Dies ergibt 3
, da "red"
zweimal vorkommt, aber nur einmal gezählt wird.
Wie len() unter der Haube funktioniert
Vielleicht fragst du dich wie ich, wie len()
eigentlich die Größe bestimmt.
Wenn du len()
für ein Objekt aufrufst, sucht Python nach der Methode __len__
für dieses Objekt. Eingebaute Typen wie Listen, Strings und Dictionaries haben alle diese Methode.
Wenn wir also eine eigene Klasse erstellen und wollen, dass len()
mit ihr arbeitet, müssen wir selbst eine __len__
Methode definieren:
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))
Hier gibt len()
3
zurück, weil die Box drei Gegenstände enthält. Genau wie bei Listen und Strings passt sich len()
an, solange das Objekt eine __len__
Methode anbietet.
Was passiert, wenn len() nicht funktioniert?
Natürlich hat nicht alles in Python eine Länge. Wenn du versuchst, len()
für etwas zu verwenden, das es nicht unterstützt (ich zeige es dir gleich anhand eines int
Datentyps), weist dich Python mit einem TypeError
darauf hin. Das ist ein häufiges Problem, vor allem wenn du mit gemischten Datentypen arbeitest. Zum Beispiel:
num = 42
print(len(num))
Dies löst den folgenden Fehler aus:
TypeError: object of type 'int' has no len()
Wenn du dies siehst, überprüfe, ob es sich bei dem Objekt, das du misst, tatsächlich um einen Container oder eine Sequenz (String, Liste oder Wörterbuch) handelt und nicht um einen einzelnen Wert wie eine Ganzzahl oder einen Float.
Einige praktische len()-Anwendungsfälle
Wir sollten nicht versuchen, die Beispiele so zu überhöhen, dass sie mehr an reale Programmiersituationen erinnern.
Schleifen mit einem Bereich
Wenn du eine Liste mit Hilfe ihrer Indizes in einer Schleife durchlaufen musst, hilft dir len()
dabei, den richtigen Bereich für deine Schleife festzulegen:
fruits = ["apple", "banana", "cherry"]
for i in range(len(fruits)):
print(f"Index {i}: {fruits[i]}")
Dadurch wird jede Frucht zusammen mit ihrem Index ausgedruckt, was dir sowohl Ordnung als auch Kontext gibt.
Index 0: apple
Index 1: banana
Index 2: cherry
Kontrolle auf leere Behälter
Häufig willst du wissen, ob ein Container - wie eine Liste oder ein Wörterbuch - leer ist, bevor du fortfährst:
cart = []
if len(cart) == 0:
print("Your shopping cart is empty.")
Dieses Muster hilft dir, Fehler oder unnötige Bearbeitungen zu vermeiden, wenn es nichts gibt, womit du arbeiten kannst.
Lange Zeichenketten abschneiden
Wenn du mit Benutzereingaben arbeitest oder Beschriftungen anzeigst, möchtest du vielleicht die Länge von Strings begrenzen. len()
hilft dir, diese Grenzen durchzusetzen:
username = "superlongusername"
if len(username) > 10:
username = username[:10]
print(username)
Hier werden alle Benutzernamen, die länger als 10 Zeichen sind, gekürzt.
Häufige Fehler mit len()
len()
kann dich in die Irre führen, selbst wenn du schon etwas Erfahrung mit Python hast:
-
Du versuchst, len() auf Ganzzahlen oder Fließkommazahlen anzuwenden: Zahlen sind keine Sammlungen, also haben sie auch keine Länge.
-
Du vergisst, dass len() Elemente zählt, nicht Werte: In einem Wörterbuch zählt len die Schlüssel - auch wenn mehrere Schlüssel auf denselben Wert verweisen.
-
Angenommen, len() funktioniert bei allem: Benutzerdefinierte Klassen brauchen eine
__len__
Methode, sonst weißlen()
nicht, was sie tun sollen.
Versuche, dir diese Regeln zu merken, um Zeit bei der Fehlersuche zu sparen.
Fehlerbehandlung mit len()
Da len()
bei Missbrauch eine TypeError
auslösen kann, ist es ratsam, deinen Code auf diese Möglichkeit vorzubereiten, besonders wenn du mit unvorhersehbaren Daten arbeitest. Ein try-except-Block ist ein einfacher Weg, um solche Fehler elegant zu behandeln:
data = 123
try:
print(len(data))
except TypeError:
print("Object has no length.")
Anstatt abzustürzen, gibt dein Programm jetzt eine freundliche Meldung aus. Unser Kurs "Objektorientierte Programmierung in Python " ist eine großartige Ressource, um diese Art von Aufgaben zu bewältigen.
len() mit benutzerdefinierten Klassen verwenden
Kehren wir zu den benutzerdefinierten Klassen zurück. Eine benutzerdefinierte Klasse ist jede Klasse, die du selbst mit dem Schlüsselwort class
definierst - zum Beispiel, wenn du etwas Spezielles für dein Programm modellierst, wie Team
, Box
oder Library
. Vorhin hast du gesehen, dass len()
bei eingebauten Typen wie Listen und Dictionaries funktioniert, weil sie eine spezielle Methode namens __len__()
implementieren. Das Gleiche gilt für deinen eigenen Unterricht. Wenn du willst, dass len()
an ihnen arbeitet, musst du __len__()
selbst definieren.
Ich versuche nicht, dich mit technischen Details zu langweilen. Das ist wichtig, wenn du eigene Datencontainer erstellst, die sich wie native Python-Sammlungen verhalten sollen. Durch die Unterstützung von len()
können deine Objekte natürlicher mit dem Rest des Python-Ökosystems interagieren, einschließlich anderer Funktionen und Bibliotheken.
Hier ist eine kurze Zusammenfassung:
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))
Auch hier gibt len()
3
zurück, was die richtige Antwort ist, da dies die Anzahl der Spieler in deinem Team ist.
Fazit
Wenn du das nächste Mal in Python etwas zählen, messen oder seine Größe überprüfen musst, denk daran, dass len()
eine gute Option ist.
Aber jetzt, wo wir am Ende angelangt sind, möchte ich noch eine wichtige Sache erwähnen. Wir haben uns auf eine Funktion konzentriert, aber es gibt fast immer viele verschiedene Möglichkeiten, etwas in Python zu erreichen. Wir haben einen Artikel, der sogar viele verschiedene Möglichkeiten zeigt, die Länge einer Liste zu ermitteln, von denen die Funktion len()
nur eine Möglichkeit ist: Python Listengröße: 8 verschiedene Methoden, um die Länge einer Liste in Python zu ermitteln.
Übe immer wieder neue Methoden ein. Das ist ein todsicherer Weg, um dich zu einem besseren Programmierer zu machen. Und vergiss nicht, dich für unseren Lernpfadzur Python-Programmierung anzumelden , in dem du lernst, wie man Code optimiert, Funktionen und Tests schreibt und vieles mehr.
