Von der Python-Dokumentation docs.python.org/tutorial/introduction.html#strings:Was sind die Standard-Slice-Indizes in Python * wirklich *?
Scheibe Indizes nützliche Standardwerte haben; Ein ausgelassener erster Index wird standardmäßig auf Null gesetzt, ein ausgelassener zweiter Index wird standardmäßig auf die Größe der zu schneidenden Zeichenfolge zurückgesetzt.
Für den Standardfall, macht dies durchaus Sinn:
>>> s = 'mystring'
>>> s[1:]
'ystring'
>>> s[:3]
'mys'
>>> s[:-2]
'mystri'
>>> s[-1:]
'g'
>>>
So weit, so gut. Allerdings scheint einen negativen Schrittwert mit leicht unterschiedlichen Vorgaben vorschlagen:
>>> s[:3:-1]
'gnir'
>>> s[0:3:-1]
''
>>> s[2::-1]
'sym'
Gut, vielleicht, wenn der Schritt negativ ist, kehren sich die Standardwerte. Ein weggelassen erster Index standardmäßig auf die Größe der Zeichenfolge geschnitten wird, eine unterlassene zweiten Index standardmäßig auf Null:
>>> s[len(s):3:-1]
'gnir'
Sieht gut aus!
>>> s[2:0:-1]
'sy'
Whoops. Verpasste das "m".
Dann gibt es jedermanns Lieblings-String Reverse-Anweisung. Und süß ist:
>>> s[::-1]
'gnirtsym'
jedoch:
>>> s[len(s):0:-1]
'gnirtsy'
Die Scheibe enthält nie den Wert des zweiten Index in der Scheibe. Ich kann die Konsistenz sehen, es so zu machen.
Also ich denke, ich beginne zu verstehen, das Verhalten von Slice in seinen verschiedenen Permutationen. Ich habe jedoch das Gefühl, dass der zweite Index etwas Besonderes ist und dass der Standardwert des zweiten Index für einen negativen Schritt nicht tatsächlich in Form einer Zahl definiert werden kann.
Kann jeder prägnant die Standard-Slice-Indizes definieren, die für die bereitgestellten Beispiele verantwortlich sein können? Dokumentation wäre ein großes Plus.
Ihr über dachte, es ... in Python Zeug nur "funktioniert": P –
Wie gnibbler Punkte unten, manchmal Sie müssen wissen, wie es funktioniert. Wenn Sie zum Beispiel eine Funktion haben, die drei optionale Parameter und Slices basierend auf den Werten dieser Parameter verwendet, was sollte sie verwenden, wenn die Parameter weggelassen werden? – abarnert
Ich wusste, dass ich ein wenig pendantisch war, aber manchmal möchte ich genau wissen, wie die Dinge funktionieren. Ich vertraue Magie nicht :-). – MikeG