2015-06-16 14 views
5
zurückkehren

zufällig auf etwas leicht heute verwirrend, während einige Unittests zu schreiben:Warum slice [: -0] leere Liste in Python

blah = ['a', 'b', 'c'] 
blah[:-3] # [] 
blah[:-2] # ['a'] 
blah[:-1] # ['a', 'b'] 
blah[:-0] # [] 

Kann für das Leben von mir nicht erklären, warum blah[:-0] # [] der Fall sein sollte scheint das Muster definitiv darauf hinzudeuten, dass es ['a', 'b', 'c'] sein sollte. Kann jemand helfen, etwas Licht in die Frage zu bringen, warum das so ist? Ich habe in den Dokumenten nicht erwähnt, warum dies der Fall ist.

+0

Die - einfach bedeutet rückwärts zählen, um den Ausgangspunkt zu finden. Genau wie '[: -2]' eine Liste mit den letzten 2 Elementen enthält, gibt '[: -0]' eine Liste mit den letzten 0 Elementen. – mehtunguh

+2

'[: -2]' gibt eine 'list' mit allen Elementen _except_ die letzten beiden. – TigerhawkT3

Antwort

11

-00 ist, und eine Scheibe, die von dem Beginn eines list inclusive indizieren 0 non-inclusive ist ein leerer list geht.

+0

Kurz gesagt, '-0' ist '0', Sie müssen daran denken, dass der Compiler beim Analysieren die Terme auswertet, und wenn er '-0' ansieht, bleibt er '0'. – bmhkim

+0

Das ist der gesamte Schub von "-0" ist "0". Keine Notwendigkeit, sich zweimal an dasselbe zu erinnern. – TigerhawkT3

5

Python behandelt -0 nicht anders als 0.

blah[:0] 

bedeutet alle Elemente bis einschließlich, aber nicht die erste. Dies ist eine leere Liste, und blah[:-0] ist genau das Gleiche.

Sie können dies testen, indem Sie prüfen, ob

blah[0:] 

die ganze Liste enthalten ist, von dem ersten Element zu starten.

Verwandte Themen