Ich verstehe nicht, schneiden mit negativen Grenzen in Python. Wie soll dies funktionieren?
Ich bin ein Neuling auf Python und haben sich über das folgende Beispiel, in meinem Buch, das ist nicht sehr gut erklärt. Hier ist mein drucken Sie den interpreter:
>>> s = 'spam'
>>> s[:-1]
'spa'
Warum schneiden ohne Anfang gebunden und ein '-1'
Gegenzug jedes element bis auf das Letzte? Ruft s[0:-1]
logisch das gleiche wie der Aufruf s[:-1]
? Sie beide das gleiche Ergebnis zurückgeben. Aber ich bin mir nicht sicher, was python ist, genau. Jegliche Hilfe würde sehr geschätzt werden.
InformationsquelleAutor jtbradle | 2009-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, ruft
s[0:-1]
ist genau das gleiche wie der Aufrufs[:-1]
.Mit einer negativen Zahl als index in python gibt das N-te element aus der rechten Seite der Liste (im Gegensatz zu den üblichen auf der linken Seite).
also, wenn Sie haben eine Liste, etwa so:
die print-Anweisung print "e".
Sobald Sie verstehen, dass (die Sie möglicherweise schon, es ist nicht ganz klar, ob das ist eines der Dinge, die Sie verwirrt sind oder nicht) können wir anfangen darüber zu reden, aufschneiden.
Ich nehme an, Sie verstehen die Grundlagen der Scheibe entlang der Linien von
myList[2:4]
(die Rückkehr['c', 'd']
) und springen Sie direkt in die slicing-notation, wobei eine Seite ist leer gelassen.Als Sie vermutet in Ihrem Beitrag,
myList[:index]
ist genau das gleiche wiemyList[0:index]
.Dies funktioniert auch anders herum, durch die Art und Weise...
myList[index:]
ist das gleiche wiemyList[index:len(myList)]
und gibt eine Liste aller Elemente aus der Liste abindex
und gehen bis zum Ende (z.B.print myList[2:]
drucken['c', 'd', 'e']
).Als eine Dritte note, können Sie sogar tun
print myList[:]
wo keine - index ist angegeben, welche im Grunde genommen bringen Sie eine Kopie der gesamten Liste (entsprichtmyList[0:len(myList)]
, zurück ['a', 'b', 'c', 'd', 'e']). Dies kann nützlich sein, wenn Sie denken, myList wird sich ändern, irgendwann, aber Sie wollen zu halten, eine Kopie davon in seinem aktuellen Zustand.Wenn Sie nicht bereits tun es finde ich einfach nur Herumspielen in einen Python-interpreter, eine ganze Reihe eine große Hilfe zum Verständnis dieser Dinge. Ich empfehle IPython.
Froh, dass ich helfen konnte:).
im 2. Absatz nach dem code-block, mylist[2, 4] myList[2:4]. (Sorry, ich habe nicht genug rep zu Bearbeiten.)
Litytestdata: Gute Entscheidung, auf den Tippfehler, es ist nun behoben.
InformationsquelleAutor Lawrence Johnston
Der entscheidende Punkt ist, dass python Indizes sollte gedacht werden als Zeiger auf das Leerzeichen zwischen den Einträgen in einer Liste, eher als die Elemente selbst. Daher 0 Punkte für den Anfang, 1 zwischen der ersten und der zweiten, ... und n, um zwischen dem N-TEN und (n+1)st.
Somit l[1:2] erhalten Sie eine Liste, die nur aus element l[1], da es gibt Ihnen alles, was zwischen den beiden Zeigern.
Ähnlich, negative Indizes Punkt zwischen den Elementen, aber diese Zeit, gezählt von der Rückseite, also -1 Punkte zwischen dem letzten element und die vorletzte, also [0:-1] bezieht sich auf ein block-Elemente nicht einschließlich, letzten.
Als syntaktischer Zucker, Sie kann ab 0, von Anfang an oder, in der Tat, am Ende, so dass l[n:] bezieht sich auf alles von l[n] (wenn n>=len(l), dann gibt es die leere Liste).
l[n:] bezieht sich auf eine leere Liste - ein 'hinter das Letzte element'. Auch dies korrigiert werden könnte 🙂
(Tatsächlich l[n:] ich habe nicht bedeuten, n=len(l), aber du hast Recht, es ist nicht klar,... fixiert die beiden.
InformationsquelleAutor Andrew Jaffe
Bitte nicht lustlos über die Liste.
für, die. Ich bin faul, so dass ich auf einen positiven, einen Schlag weniger (unter 7 oder -3 für den start).
Wieder, Sie können positiv oder negativ-index-für die, die (unter 2 oder -8 für stop).
Hier melden Fragen; natürlich - für rückwärts; Wert der Schrittlänge, die Sie kennen.
Stride ist ein "vector" mit sowohl Stärke und Richtung (unten -1, hinten alle).
Alle Ergebnisse in
[7, 6, 5, 4, 3]
.InformationsquelleAutor Rathinavelu Muthaliar
Negative Indizes werden vom Ende her gezählt, also s[:-1] ist äquivalent zu s[:len(s)-1] und s[-1] ist das Letzte element, zum Beispiel.
InformationsquelleAutor MovEaxEsp
Ja, ruft
s[0:-1]
ist logisch das gleiche wies[:-1]
seit aufschneiden wird am besten als definiert:Python ermöglicht Ihnen die 0 weglassen, da dies den code verständlicher.
InformationsquelleAutor Andrew Hare