Saltar al contenido

¿Cómo se usa la sintaxis de corte de puntos suspensivos en Python?

Nuestros mejores desarrolladores han agotado sus provisiones de café, en su búsqueda noche y día por la solución, hasta que Paola encontró la contestación en Gogs y en este momento la compartimos con nosotros.

Solución:

Los puntos suspensivos se utilizan en numpy para dividir estructuras de datos de mayor dimensión.

Está diseñado para significar en este punto, inserte tantos cortes completos (:) para extender el corte multidimensional a todas las dimensiones.

Ejemplo:

>>> from numpy import arange
>>> a = arange(16).reshape(2,2,2,2)

Ahora, tienes una matriz de 4 dimensiones de orden 2x2x2x2. Para seleccionar todos los primeros elementos en la cuarta dimensión, puede usar la notación de puntos suspensivos

>>> a[..., 0].flatten()
array([ 0,  2,  4,  6,  8, 10, 12, 14])

que es equivalente a

>>> a[:,:,:,0].flatten()
array([ 0,  2,  4,  6,  8, 10, 12, 14])

En sus propias implementaciones, puede ignorar el contrato mencionado anteriormente y usarlo para lo que crea conveniente.

Ellipsiso ... no es una característica oculta, es solo una constante. Es bastante diferente a, digamos, javascript ES6, donde es parte de la sintaxis del lenguaje. Ninguna clase integrada o construcción del lenguaje Python hace uso de él.

Entonces, la sintaxis depende completamente de usted, o de otra persona, que haya escrito un código para entenderlo.

Numpy lo usa, como se indica en la documentación. Algunos ejemplos aquí.

En tu propia clase, lo usarías así:

>>> class TestEllipsis(object):
...     def __getitem__(self, item):
...         if item is Ellipsis:
...             return "Returning all items"
...         else:
...             return "return %r items" % item
... 
>>> x = TestEllipsis()
>>> print x[2]
return 2 items
>>> print x[...]
Returning all items

Por supuesto, existe la documentación de Python y la referencia del lenguaje. Pero esos no son muy útiles.

Este es otro uso de los puntos suspensivos, que no tiene nada que ver con las porciones: a menudo lo uso en la comunicación entre subprocesos con colas, como una marca que indica “Terminado”; está ahí, es un objeto, es un singleton, y su nombre significa “falta de”, y no es el Ninguno usado en exceso (que podría colocarse en una cola como parte del flujo de datos normal). YMMV.

Sección de Reseñas y Valoraciones

Si crees que ha sido de utilidad este post, nos gustaría que lo compartas con el resto juniors de este modo contrubuyes a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *