Ellipsis se utiliza principalmente por la extensión numeric python, que añade un multidementional tipo de matriz. Dado que hay más de una dimensión, slicing se vuelve más complejo que solo un índice de inicio y detención; también es útil poder dividir 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]])
Ellipsis se utiliza aquí para indicar un marcador de posición para el resto de las dimensiones de la matriz no especificado . Piense que indica la división completa [:] para las dimensiones no especificadas, por lo que para una matriz en 3D, a[...,0]
es lo mismo que a[:,:,0]
y para 4d, a[:,:,:,0]
.
Tenga en cuenta que el literal Ellipsis real (...) no se puede usar fuera de la sintaxis del segmento en python2, aunque hay un objeto Ellipsis incorporado. Esto es lo que significa "La conversión de un elemento de sector de puntos suspensivos es el objeto Ellipsis incorporado". es decir. "a[...]
" es efectivamente azúcar para "a[Ellipsis]
". En python3, ...
denota elipsis en cualquier lugar, por lo que puede escribir:
>>> ...
Ellipsis
Si no se está usando numpy, se puede casi ignorar toda mención de la elipsis. Ninguno de los tipos incorporados lo usa, por lo que todo lo que tiene que importar es que las listas pasen un solo objeto de división, que contenga los miembros "start
", "stop
" y "step
". es decir:
l[start:stop:step] # proper_slice syntax from the docs you quote.
es equivalente a llamar:
l.__getitem__(slice(start, stop, step))
La declaración "Tenga en cuenta que los puntos suspensivos real literal (...) no se puede utilizar fuera de la sintaxis de la rebanada en python2" no es del todo exacta. Puede usar "..." de la siguiente manera. a [3, ..., 5], dado que a es una instancia de clase que define __getitem __ (self, key). La afirmación correcta sería que Ellipsis no es utilizable fuera del operador de búsqueda de índice. – abc
@abc: 'a [3, ..., 5]' es sintaxis de corte técnicamente. – user2357112