Dies wurde in einem anderen Frage vor kurzem. Ich werde mein Vorhaben näher erläutern respuesta von dort aus:
Ellipsis ist ein Objekt, das in der Slice-Notation erscheinen kann. Zum Beispiel:
myList[1:2, ..., 0]
Ihre Auslegung ist allein Sache derjenigen, die die __getitem__
Funktion und sieht Ellipsis
Objekte, aber seine Hauptverwendung (und beabsichtigte) ist in der numpy Bibliothek eines Drittanbieters, die einen mehrdimensionalen Array-Typ hinzufügt. Da es mehr als eine Dimension gibt, wird die Zerlegung komplexer als nur ein Start- und Stoppindex; es ist nützlich, auch in mehreren Dimensionen zerlegen zu können. Bei einem 4x4-Array z.B. würde der obere linke Bereich durch das Slice 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]])
Weiterführend wird hier Ellipsis verwendet, um einen Platzhalter für den Rest der nicht angegebenen Array-Dimensionen anzugeben. Stellen Sie sich das so vor, als ob es das komplette Slice anzeigt [:]
für alle Dimensionen in der Lücke, in der es platziert ist, also für ein 3D-Array, a[...,0]
と同じです。 a[:,:,0]
und für 4d, a[:,:,:,0]
Ähnlich, a[0,...,0]
es a[0,:,:,0]
(mit beliebig vielen Doppelpunkten in der Mitte, die die volle Anzahl der Dimensionen des Arrays ausmachen).
Interessant ist, dass in Python3 das Ellipsis-Literal ( ...
) ist außerhalb der Slice-Syntax verwendbar, so dass Sie tatsächlich schreiben können:
>>> ...
Ellipsis
Abgesehen von den verschiedenen numerischen Typen wird sie meines Erachtens nicht verwendet. Soweit ich weiß, wurde es nur für die Verwendung in Numpy hinzugefügt und hat keine andere Kernunterstützung als die Bereitstellung des Objekts und der entsprechenden Syntax. Das Objekt, das dort vorhanden ist, erforderte dies nicht, aber die wörtliche "..." Unterstützung für Slices schon.