Wie erhalten Sie in Python das letzte Element einer Liste?
2066
some_list[-1]
ist die kürzeste und pythonischste.
Mit dieser Syntax können Sie sogar noch viel mehr tun. Die some_list[-n]
Syntax erhält das n-te vorletzte Element. So some_list[-1]
bekommt das letzte Element, some_list[-2]
erhält die vorletzte, usw., den ganzen Weg hinunter zu some_list[-len(some_list)]
, mit dem Sie das erste Element gibt.
Auf diese Weise können Sie auch Listenelemente festlegen. Zum Beispiel:
>>> some_list = [1, 2, 3]
>>> some_list[-1] = 5 # Set the last element
>>> some_list[-2] = 3 # Set the second to last element
>>> some_list
[1, 3, 5]
Beachten Sie, dass beim Abrufen eines Listenelements nach Index ein ausgelöst wird, IndexError
wenn das erwartete Element nicht vorhanden ist. Dies bedeutet, dass some_list[-1]
eine Ausnahme ausgelöst some_list
wird, wenn sie leer ist, da eine leere Liste kein letztes Element enthalten kann.
some_list.last
- es wäre eine schöne CodezeileWenn Ihre
str()
oderlist()
Objekte möglicherweise leer sind:astr = ''
oderalist = []
, dann möchten Sie möglicherweisealist[-1:]
anstelle vonalist[-1]
"Objektgleichheit" verwenden.Die Bedeutung davon ist:
Wenn unterschieden wird, ist die Rückgabe eines leeren Listenobjekts oder eines leeren str-Objekts eher "letztes Element" als ein Ausnahmeobjekt.
quelle
if len(my_vector) == 0 or my_vector[-1] != update_val
ein praktikables Muster. Aber es ist sicherlich keine globale Lösung - es wäre schön, eine Syntaxform zu haben, in der None das Ergebnis warxs[-1] if xs else None
Sie können auch tun:
Dies hängt davon ab, was Sie mit Ihrer Liste tun möchten, da die
pop()
Methode das letzte Element löscht.quelle
Der einfachste Weg, das letzte Element in Python anzuzeigen, ist
Es gibt viele andere Methoden, um ein solches Ziel zu erreichen, aber diese sind kurz und bündig.
quelle
list[-1]
ein Fehler auftritt.a[-1:][0]
überhaupt ? Er sorgta[-1]
sowieso auch. Erklärung bitte?Um nur das letzte Element zu erhalten,
Übergabe
-1
an die tiefgestellte Notation:Erläuterung
Indizes und Slices können negative Ganzzahlen als Argumente verwenden.
Ich habe ein Beispiel modifizierter aus der Dokumentation , die Artikel in einer Sequenz , um anzuzeigen , jeden Index Referenzen, in diesem Fall in der Zeichenfolge
"Python"
,-1
verweist auf das letzte Element, das Zeichen,'n'
:Zuordnung durch iterierbares Auspacken
Diese Methode kann unnötigerweise eine zweite Liste materialisieren, um nur das letzte Element zu erhalten, aber der Vollständigkeit halber (und da sie jede iterierbare unterstützt - nicht nur Listen):
Der Variablenname head ist an die unnötige neu erstellte Liste gebunden:
Wenn Sie nicht beabsichtigen, mit dieser Liste nichts zu tun, wäre dies eher apropos:
Oder wirklich, wenn Sie wissen, dass es sich um eine Liste handelt (oder zumindest die tiefgestellte Notation akzeptiert):
In einer Funktion
Ein Kommentator sagte:
Diese wären recht einfach zu definieren:
Oder verwenden Sie
operator.itemgetter
:In beiden Fällen:
Sonderfälle
Wenn Sie etwas Komplizierteres tun, ist es möglicherweise leistungsfähiger, das letzte Element auf etwas andere Weise zu erhalten.
Wenn Sie neu in der Programmierung sind, sollten Sie diesen Abschnitt vermeiden, da er ansonsten semantisch unterschiedliche Teile von Algorithmen miteinander verbindet. Wenn Sie Ihren Algorithmus an einer Stelle ändern, kann dies unbeabsichtigte Auswirkungen auf eine andere Codezeile haben.
Ich versuche, Vorbehalte und Bedingungen so vollständig wie möglich bereitzustellen, aber ich habe möglicherweise etwas verpasst. Bitte kommentieren Sie, wenn Sie denken, dass ich eine Einschränkung auslasse.
Schneiden
Ein Slice einer Liste gibt eine neue Liste zurück. Wir können also von -1 bis zum Ende schneiden, wenn wir das Element in einer neuen Liste haben möchten:
Dies hat den Vorteil, dass es nicht fehlschlägt, wenn die Liste leer ist:
Während der Versuch, über einen Index zuzugreifen, eine Frage aufwirft,
IndexError
die behandelt werden müsste:Aber auch hier sollte das Schneiden nur zu diesem Zweck durchgeführt werden, wenn Sie Folgendes benötigen:
for
SchleifenAls eine Funktion von Python gibt es kein inneres Scoping in einer
for
Schleife.Wenn Sie bereits eine vollständige Iteration über die Liste durchführen, wird das letzte Element weiterhin durch den in der Schleife zugewiesenen Variablennamen referenziert:
Dies ist semantisch nicht das Letzte in der Liste. Dies ist semantisch das Letzte, an das der Name
item
gebunden war.Daher sollte dies nur verwendet werden, um das letzte Element zu erhalten, wenn Sie
Erhalten und Entfernen
Wir können unsere ursprüngliche Liste auch mutieren, indem wir das letzte Element entfernen und zurückgeben:
Aber jetzt wird die ursprüngliche Liste geändert.
(
-1
ist eigentlich das Standardargument,list.pop
kann also ohne Indexargument verwendet werden):Tun Sie dies nur, wenn
Dies sind gültige Anwendungsfälle, aber nicht sehr häufig.
Speichern Sie den Rest der Rückseite für später:
Ich weiß nicht, warum Sie das tun würden, aber der Vollständigkeit halber können Sie das Ergebnis übergeben , da
reversed
ein Iterator zurückgegeben wird (der das Iterator-Protokoll unterstützt)next
:Es ist also so, als würde man das Gegenteil tun:
Aber ich kann mir keinen guten Grund dafür vorstellen, es sei denn, Sie benötigen später den Rest des Reverse-Iterators, der wahrscheinlich eher so aussehen würde:
und nun:
quelle
IndexError: list index out of range
Verwenden Sie diese Syntax, um dies zu verhindern :quelle
Eine andere Methode:
quelle
lst[-1]
ist der beste Ansatz, aber mit allgemeinen Iterabilitäten sollten Sie Folgendes berücksichtigenmore_itertools.last
:Code
quelle
list[-1]
ruft das letzte Element der Liste ab, ohne die Liste zu ändern.list.pop()
wird das letzte Element der Liste abrufen, aber die ursprüngliche Liste wird mutiert / geändert. Normalerweise wird das Mutieren der ursprünglichen Liste nicht empfohlen.Wenn Sie aus irgendeinem Grund nach etwas weniger Pythonischem suchen, können Sie es auch verwenden
list[len(list)-1]
, vorausgesetzt, die Liste ist nicht leer.quelle
Sie können auch den folgenden Code verwenden, wenn Sie IndexError nicht erhalten möchten, wenn die Liste leer ist.
quelle
Ok, aber was ist mit in fast jeder Sprache üblich
items[len(items) - 1]
? Dies ist IMO der einfachste Weg, um das letzte Element zu erhalten, da es keine pythonischen Kenntnisse erfordert .quelle
some_list[-1]
Ansatz, weil es logischer ist und zeigt, was es tatsächlich besser macht alssome_list[-1]
meiner Meinung nach.