So teilen Sie eine Liste in Python auf (Indizes, Schritte und Umkehrung)

Erfahren Sie, wie Sie Listen in Python mithilfe der leistungsstarken Klammersyntax aufteilen. Master-Start-, Stopp- und Schrittargumente, negative Indizierung und Umkehrlisten.

Probieren Sie diese Lösung im Editor aus

Übersicht

Slicing ist eine der intuitivsten und leistungsstärksten Funktionen von Python und ermöglicht es Ihnen, Teilmengen einer Liste, eines Tupels oder einer Zeichenfolge mit sauberer und prägnanter Syntax zu extrahieren. Anstatt ausführliche Schleifen zu schreiben, um bestimmte Elemente aus einer Liste zu kopieren, können Sie mit der Slice-Notation von Python einen Bereich von Indizes in eckigen Klammern angeben.

Die vollständige Syntax für das Listen-Slicing lautet „my_list[start:stop:step]“. Der „Start“-Index ist inklusive, der „Stop“-Index ist exklusiv und „step“ definiert das Inkrement zwischen Elementen (standardmäßig 1). Wenn Sie „start“ weglassen, verwendet Python standardmäßig den Anfang der Liste. Wenn Sie „stop“ weglassen, verwendet Python standardmäßig das Ende der Liste. Dies macht das Extrahieren von Teilen von Sammlungen sehr ausdrucksstark.

Slicing ist außerdem äußerst vielseitig, da es negative Indizes unterstützt. Ein negativer Start- oder Stoppindex zählt vom Ende der Liste rückwärts (wobei „-1“ das letzte Element darstellt). Durch Festlegen eines negativen Schrittwerts wie „my_list[::-1]“ können Sie schnell eine umgekehrte Kopie der Liste abrufen. Das Verständnis der Slice-Bereiche ist für eine saubere Datenextraktion unerlässlich.

Code- und Ausführungsausgabe

Dieses Skript demonstriert das Listen-Slicing mit verschiedenen Start-, Stopp- und Schrittbereichen, negativer Indizierung und Listenumkehr.

numbers = [0, 10, 20, 30, 40, 50, 60, 70, 80]

# 1. Basic slicing: elements from index 2 up to (but excluding) 6
subset = numbers[2:6]
print("Subset [2:6]:", subset)

# 2. Omitting indices: start to index 4, and index 5 to end
first_five = numbers[:5]
last_four = numbers[5:]
print("First five [:5]:", first_five)
print("Last four [5:]:", last_four)

# 3. Using a step parameter: get every second element
every_second = numbers[::2]
print("Every second [::2]:", every_second)

# 4. Negative indexing: get the last three elements
last_three = numbers[-3:]
print("Last three [-3:]:", last_three)

# 5. Reverse the list using step=-1
reversed_numbers = numbers[::-1]
print("Reversed list [::-1]:", reversed_numbers)
Terminal-Ausgabe
Subset [2:6]: [20, 30, 40, 50]
First five [:5]: [0, 10, 20, 30, 40]
Last four [5:]: [50, 60, 70, 80]
Every second [::2]: [0, 20, 40, 60, 80]
Last three [-3:]: [60, 70, 80]
Reversed list [::-1]: [80, 70, 60, 50, 40, 30, 20, 10, 0]

Schrittweise Umsetzung

  • Verwenden Sie list[start:stop], um Elemente vom Indexstart bis (aber nicht einschließlich) Stop zu extrahieren.
  • Lassen Sie Start- oder Stoppindizes weg (z. B. list[:4] oder list[4:]), um sie von der Grenze der Liste abzuschneiden.
  • Übergeben Sie ein drittes Argument innerhalb der Klammer list[::step], um Elemente in regelmäßigen Abständen zu überspringen.
  • Verwenden Sie negative Indizes, um Elemente vom Ende der Sammlung rückwärts zu zählen.

Häufig gestellte Fragen

Ändert das Schneiden die ursprüngliche Liste?

Nein, beim Listen-Slicing wird eine flache Kopie des angeforderten Bereichs zurückgegeben, sodass die ursprüngliche Liste völlig unverändert bleibt.

Was passiert, wenn die Slice-Indizes außerhalb der Grenzen liegen?

Im Gegensatz zum Zugriff auf einen einzelnen Index, der einen IndexError auslöst, verzeiht das Slicing den Bereich einfach an den Grenzen der Liste und gibt eine leere Liste zurück, wenn keine Elemente in den Bereich fallen.

Verwandte Themen

Empfohlene Python-Ressourcen

Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.