Esto apareció en otro question recientemente. Elaboraré en mi answer desde allí:
Ellipsis es un objeto que puede aparecer en la notación de división. Por ejemplo:
myList[1:2, ..., 0]
Su interpretación es puramente hasta lo implementa la función __getitem__
y ve Ellipsis
objetos allí, pero su principal (y la intención) es el uso de la extensión numeric python, lo que añade un tipo de matriz multidimensional. Como hay más de una dimensión, cortar se vuelve más complejo que solo un índice de inicio y finalización; también es útil para cortar en varias dimensiones. Por ejemplo, dada una matriz de 4x4, la zona superior izquierda se definiría por la rebanada [: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]])
La extensión de este más allá, Ellipsis se utiliza aquí para indicar un marcador de posición para el resto de las dimensiones de la matriz no especificados. Piense en ello como indicando el corte completo [:]
para todas las dimensiones en el espacio en el que está colocado, por lo que para un arreglo 3D, a[...,0]
es lo mismo que a[:,:,0]
y para 4d, a[:,:,:,0]
, del mismo modo, a[0,...,0]
es a[0,:,:,0]
(con tantos puntos en el el medio compone el número completo de dimensiones en la matriz).
Curiosamente, en python3, los puntos suspensivos literal (...
) se puede utilizar fuera de la sintaxis de corte, por lo que en realidad se puede escribir:
>>> ...
Ellipsis
Aparte de los diversos tipos numéricos, no, no creo que es usado.Por lo que yo sé, fue agregado exclusivamente para uso numpy y no tiene ningún soporte básico que no sea proporcionar el objeto y la sintaxis correspondiente. El objeto que estaba allí no lo requería, pero el soporte literal "..." sí lo requería.
Ver las respuestas a http://stackoverflow.com/questions/752602/slicing-in-python-expressions -documentación –
Lo encontré así: escribí 'x = []; x.append (x); print (x)', para ver cómo manejaba la stringificación de objetos cíclicos. Devolvió '[[...]]'. Pensé: "Me pregunto qué sucederá si escribo' [[...]] 'Supongo que arrojaría un error de sintaxis. En su lugar, devolvió' [[Ellipsis]] '. Python es tan extraño. la búsqueda que siguió me llevó a esta página. – Cyoce
tenga en cuenta que el '...' en una representación recursiva es solo un marcador de posición y no tiene relación con 'Ellipsis' – Eevee