Ellipsis est utilisé principalement par l'extension numeric python, ce qui ajoute un type de réseau multidementional. Comme il y a plus d'une dimension, slicing devient plus complexe qu'un simple index de départ et d'arrêt; il est utile de pouvoir découper en plusieurs dimensions. par exemple, étant donné un tableau de 4x4, la zone en haut à gauche serait défini par la tranche « [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 est utilisé ici pour indiquer un espace réservé pour le reste des dimensions du tableau non spécifié . Pensez-y comme indiquant la tranche complète [:] pour les dimensions non spécifiées, donc pour un tableau 3d, a[...,0]
est le même que a[:,:,0]
et pour 4d, a[:,:,:,0]
.
Notez que le littéral Ellipsis réel (...) n'est pas utilisable en dehors de la syntaxe de tranche dans python2, bien qu'il existe un objet Ellipsis intégré. C'est ce que l'on entend par "La conversion d'un élément de tranche de ellipse est l'objet Ellipsis intégré." c'est à dire. "a[...]
" est effectivement du sucre pour "a[Ellipsis]
". Dans python3, ...
indique Ellipsis partout, donc vous pouvez écrire:
>>> ...
Ellipsis
Si vous ne l'utilisez numpy, vous pouvez très bien ignorer toute mention de Ellipsis. Aucun des types intégrés ne l'utilise, donc tout ce dont vous avez à vous soucier c'est que les listes reçoivent un seul objet, qui contient les membres "start
", "stop
" et "step
". à savoir:
l[start:stop:step] # proper_slice syntax from the docs you quote.
équivaut à appeler:
l.__getitem__(slice(start, stop, step))
La déclaration « Notez que le Ellipsis réelle littérale (...) ne sont pas utilisables en dehors de la syntaxe de tranche dans python2 » n'est pas tout à fait exact. Vous pouvez utiliser "..." de la manière suivante. a [3, ..., 5], étant donné que a est une instance de classe qui définit __getitem __ (self, key). La déclaration correcte serait Ellipsis n'est pas utilisable en dehors de l'opérateur de recherche d'index. – abc
@abc: 'a [3, ..., 5]' est une syntaxe de découpage technique. – user2357112