Listen
Zuletzt aktualisiert am 2025-10-31 | Diese Seite bearbeiten
Geschätzte Zeit: 20 Minuten
Übersicht
Fragen
- Wie kann ich mehrere Werte speichern?
Ziele
- Erklären Sie, warum Programme Wertesammlungen benötigen.
- Programme schreiben, die flache Listen erstellen, indizieren, zerschneiden und durch Zuweisungen und Methodenaufrufe modifizieren.
Eine Liste speichert viele Werte in einer einzigen Struktur.
- Berechnungen mit hundert Variablen, die
pressure_001,pressure_002, usw. heißen, wären mindestens so langsam wie die manuelle Berechnung. - Verwenden Sie eine Liste, um viele Werte zusammen zu
speichern.
- Enthält Werte innerhalb eckiger Klammern
[...]. - Werte sind durch Kommata
,getrennt.
- Enthält Werte innerhalb eckiger Klammern
- Verwenden Sie
len, um herauszufinden, wie viele Werte in einer Liste sind.
PYTHON
pressures = [0.273, 0.275, 0.277, 0.275, 0.276]
print('pressures:', pressures)
print('length:', len(pressures))
AUSGABE
pressures: [0.273, 0.275, 0.277, 0.275, 0.276]
length: 5
Verwenden Sie den Index eines Elements, um es aus einer Liste zu holen.
- Genau wie Zeichenketten.
PYTHON
print('zeroth item of pressures:', pressures[0])
print('fourth item of pressures:', pressures[4])
AUSGABE
zeroth item of pressures: 0.273
fourth item of pressures: 0.276
Die Werte von Listen können durch Zuweisungen ersetzt werden.
- Verwenden Sie einen Indexausdruck auf der linken Seite der Zuweisung, um einen Wert zu ersetzen.
AUSGABE
pressures is now: [0.265, 0.275, 0.277, 0.275, 0.276]
Das Anhängen von Elementen an eine Liste verlängert diese.
- Verwenden Sie
list_name.append, um Elemente am Ende einer Liste hinzuzufügen.
PYTHON
primes = [2, 3, 5]
print('primes is initially:', primes)
primes.append(7)
print('primes has become:', primes)
AUSGABE
primes is initially: [2, 3, 5]
primes has become: [2, 3, 5, 7]
-
appendist eine Methode von Listen.- Wie eine Funktion, aber an ein bestimmtes Objekt gebunden.
- Verwenden Sie
object_name.method_name, um Methoden aufzurufen.- ähnelt absichtlich der Art und Weise, wie wir in einer Bibliothek auf Dinge verweisen.
- Wir werden im weiteren Verlauf weitere Methoden für Listen
kennenlernen.
- Verwenden Sie
help(list)für eine Vorschau.
- Verwenden Sie
-
extendist ähnlich wieappend, erlaubt es aber, zwei Listen zu kombinieren. Zum Beispiel:
PYTHON
teen_primes = [11, 13, 17, 19]
middle_aged_primes = [37, 41, 43, 47]
print('primes is currently:', primes)
primes.extend(teen_primes)
print('primes has now become:', primes)
primes.append(middle_aged_primes)
print('primes has finally become:', primes)
AUSGABE
primes is currently: [2, 3, 5, 7]
primes has now become: [2, 3, 5, 7, 11, 13, 17, 19]
primes has finally become: [2, 3, 5, 7, 11, 13, 17, 19, [37, 41, 43, 47]]
Beachten Sie, dass extend zwar die “flache” Struktur der
Liste beibehält, aber das Anhängen einer Liste an eine Liste bedeutet,
dass das letzte Element in primes selbst eine Liste und
keine Ganzzahl ist. Listen können Werte beliebigen Typs enthalten; daher
sind auch Listen von Listen möglich.
Verwenden Sie del, um Elemente aus einer Liste
vollständig zu entfernen.
- Wir verwenden
del list_name[index], um ein Element aus einer Liste zu entfernen (im Beispiel ist 9 keine Primzahl) und sie damit zu kürzen. -
delist keine Funktion oder Methode, sondern eine Anweisung in der Sprache.
PYTHON
primes = [2, 3, 5, 7, 9]
print('primes before removing last item:', primes)
del primes[4]
print('primes after removing last item:', primes)
AUSGABE
primes before removing last item: [2, 3, 5, 7, 9]
primes after removing last item: [2, 3, 5, 7]
Die leere Liste enthält keine Werte.
- Verwenden Sie
[]allein, um eine Liste darzustellen, die keine Werte enthält.- “Die Null der Listen.”
- Hilfreich als Ausgangspunkt für die Sammlung von Werten (die wir in der nächsten Folge sehen werden).
Listen können Werte unterschiedlichen Typs enthalten.
- Eine einzelne Liste kann Zahlen, Zeichenketten und alles andere enthalten.
Zeichenketten können wie Listen indiziert werden.
- Abrufen einzelner Zeichen aus einer Zeichenkette unter Verwendung von Indizes in eckigen Klammern.
PYTHON
element = 'carbon'
print('zeroth character:', element[0])
print('third character:', element[3])
AUSGABE
zeroth character: c
third character: b
Zeichenketten sind unveränderlich.
- Die Zeichen in einer Zeichenkette können nicht geändert werden,
nachdem sie erstellt wurde.
- Immutable (unveränderlich): kann nach der Erstellung nicht mehr geändert werden.
- Im Gegensatz dazu sind Listen veränderlich: Sie können an Ort und Stelle geändert werden.
- Python betrachtet die Zeichenkette als einen einzelnen Wert mit Teilen, nicht als eine Sammlung von Werten.
FEHLER
TypeError: 'str' object does not support item assignment
- Listen und Zeichenketten sind beides Sammlungen.
Eine Indizierung über das Ende der Auflistung hinaus ist ein Fehler.
- Python meldet einen
IndexError, wenn wir versuchen, auf einen Wert zuzugreifen, der nicht existiert.- Dies ist eine Art von Laufzeitfehler.
- Kann beim Parsen des Codes nicht erkannt werden, da der Index möglicherweise anhand von Daten berechnet wird.
AUSGABE
IndexError: string index out of range
Füllen Sie die Lücken aus
Wie groß ist ein Slice?
Wenn start und stop beide nicht-negative
ganze Zahlen sind, wie lang ist die Liste
values[start:stop]?
Die Liste values[start:stop] hat bis zu
stop - start Elemente. Zum Beispiel hat
values[1:4] die 3 Elemente values[1],
values[2], und values[3]. Warum “bis zu”? Wie
wir in Folge 2 gesehen haben, erhalten
wir immer noch eine Liste zurück, wenn stop größer ist als
die Gesamtlänge der Liste values, aber sie wird kürzer sein
als erwartet.
-
list('some string')wandelt eine Zeichenkette in eine Liste um, die alle ihre Zeichen enthält. -
joingibt eine Zeichenkette zurück, die die Verkettung jedes Zeichenkettenelements in der Liste ist und fügt das Trennzeichen zwischen jedem Element in der Liste hinzu. Das Ergebnis istx-y-z. Das Trennzeichen zwischen den Elementen ist die Zeichenkette, die diese Methode liefert.
Arbeiten mit dem Ende
Was gibt das folgende Programm aus?
- Wie interpretiert Python einen negativen Index?
- Wenn eine Liste oder Zeichenkette N Elemente hat, welches ist der negativste Index, der sicher verwendet werden kann, und welche Stelle repräsentiert dieser Index?
- Wenn
valueseine Liste ist, was macht danndel values[-1]? - Wie kann man alle Elemente außer dem letzten anzeigen, ohne
valueszu ändern? (Tipp: Sie müssen Slicing und negative Indizierung kombinieren.)
Das Programm gibt m aus.
- Python interpretiert einen negativen Index so, als würde man vom
Ende her beginnen (im Gegensatz zum Anfang). Das letzte Element ist
-1. - Der letzte Index, der bei einer Liste mit N Elementen sicher
verwendet werden kann, ist das Element
-N, das das erste Element darstellt. -
del values[-1]entfernt das letzte Element aus der Liste. values[:-1]
Das Programm druckt
-
strideist die Schrittweite des Slice. - Das Slice
1::2wählt alle geradzahligen Elemente einer Sammlung aus: es beginnt mit dem Element1(welches das zweite Element ist, da die Indizierung bei0beginnt), geht weiter bis zum Ende (da keinendangegeben ist) und verwendet eine Schrittweite von2(d.h. es wählt jedes zweite Element aus).
AUSGABE
lithium
Die erste Anweisung gibt die gesamte Zeichenkette aus, da der Slice über die Gesamtlänge der Zeichenkette hinausgeht. Die zweite Anweisung gibt eine leere Zeichenkette zurück, da der Ausschnitt “außerhalb der Grenzen” der Zeichenkette liegt.
Programm A druckt
AUSGABE
letters is ['g', 'o', 'l', 'd'] and result is ['d', 'g', 'l', 'o']
Programm B druckt
AUSGABE
letters is ['d', 'g', 'l', 'o'] and result is None
sorted(letters) gibt eine sortierte Kopie der Liste
letters zurück (die ursprüngliche Liste
letters bleibt unverändert), während
letters.sort() die Liste letters in-place
sortiert und nichts zurückgibt.
Programm A druckt
AUSGABE
new is ['D', 'o', 'l', 'd'] and old is ['D', 'o', 'l', 'd']
Programm B druckt
AUSGABE
new is ['D', 'o', 'l', 'd'] and old is ['g', 'o', 'l', 'd']
new = old macht new zu einem Verweis auf
die Liste old; new und old zeigen
auf das gleiche Objekt.
new = old[:] erzeugt jedoch ein neues Listenobjekt
new, das alle Elemente der Liste old enthält;
new und old sind unterschiedliche Objekte.
- Eine Liste speichert viele Werte in einer einzigen Struktur.
- Verwenden Sie den Index eines Elements, um es aus einer Liste zu holen.
- Die Werte von Listen können durch Zuweisung ersetzt werden.
- Das Anhängen von Elementen an eine Liste verlängert diese.
- Verwenden Sie
del, um Elemente aus einer Liste vollständig zu entfernen. - Die leere Liste enthält keine Werte.
- Listen können Werte unterschiedlichen Typs enthalten.
- Zeichenketten können wie Listen indiziert werden.
- Zeichenketten sind unveränderlich.
- Die Indizierung über das Ende der Auflistung hinaus ist ein Fehler.