Ellipsis wird hauptsächlich durch die numeric python Erweiterung verwendet, die eine multidementional Array-Typ hinzufügt. Da es mehr als eine Dimension gibt, wird slicing komplexer als nur ein Start- und Stoppindex; Es ist nützlich, in mehreren Dimensionen zu schneiden. Beispiel Bei einer 4x4-Matrix, die linke obere Fläche würde durch die Scheibe definiert werden, „[: 2: 2]“
>>> a
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12],
[13, 14, 15, 16]])
>>> a[:2,:2] # top left
array([[1, 2],
[5, 6]])
Auslassungspunkte hier verwendet ist ein Platzhalter für den Rest der Array-Dimensionen, um anzuzeigen, keine Angabe . Stellen Sie es sich so vor, dass das vollständige Segment [:] für nicht spezifizierte Dimensionen angegeben wird, also für ein 3d-Array, a[...,0]
ist das gleiche wie a[:,:,0]
und für 4d, .
Beachten Sie, dass das tatsächliche Ellipsis-Literal (...) außerhalb der Slice-Syntax in python2 nicht verwendet werden kann, obwohl ein integriertes Ellipsis-Objekt vorhanden ist. Dies ist mit "Die Umwandlung eines Ellipsenscheibenelements ist das integrierte Ellipsenobjekt" gemeint. dh. "a[...]
" ist effektiv Zucker für "a[Ellipsis]
". In python3, ...
bezeichnet überall Auslassungspunkte, so können Sie schreiben:
>>> ...
Ellipsis
Wenn Sie nicht numpy verwenden, können Sie so ziemlich ignorieren jegliche Erwähnung von Auslassungspunkte. Keiner der eingebauten Typen verwendet es, so dass Sie sich wirklich darum kümmern müssen, dass Listen ein einzelnes Slice-Objekt übergeben werden, das "start
", "stop
" und "step
" Mitglieder enthält. ie:
l[start:stop:step] # proper_slice syntax from the docs you quote.
entspricht Aufruf:
l.__getitem__(slice(start, stop, step))
Die Aussage "Beachten Sie, dass die tatsächliche Ellipsis literal (...) außerhalb der Scheibe-Syntax in python2 nicht verwendbar ist" nicht ganz genau ist. Sie können "..." folgendermaßen verwenden. a [3, ..., 5], vorausgesetzt, dass a eine Klasseninstanz ist, die __getitem __ (self, key) definiert. Die korrekte Aussage wäre, dass Ellipsis außerhalb des Index-Lookup-Operators nicht verwendbar ist. – abc
@abc: 'a [3, ..., 5]' ist technisch Slicing-Syntax. – user2357112