... warum druckt foo [6: 0: -1] nicht die gesamte Liste?
Weil der Mittelwert eher der exklusive als der inklusive Stoppwert ist. Die Intervallnotation lautet [Start, Stopp].
Genau so funktioniert der [x] -Bereich:
>>> range(6, 0, -1)
[6, 5, 4, 3, 2, 1]
Dies sind die Indizes, die in Ihre resultierende Liste aufgenommen werden, und sie enthalten keine 0 für das erste Element.
>>> range(6, -1, -1)
[6, 5, 4, 3, 2, 1, 0]
Eine andere Sichtweise ist:
>>> L = ['red', 'white', 'blue', 1, 2, 3]
>>> L[0:6:1]
['red', 'white', 'blue', 1, 2, 3]
>>> len(L)
6
>>> L[5]
3
>>> L[6]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
Der Index 6 liegt jenseits (genau eins) der gültigen Indizes für L und schließt ihn daher als ausgeschlossenen Stoppwert aus dem Bereich aus:
>>> range(0, 6, 1)
[0, 1, 2, 3, 4, 5]
Gibt Ihnen weiterhin Indizes für jedes Element in der Liste.
foo[7:None:-1]
Möglichkeit :)