Cette question a été soulevée dans une autre question récemment. Je vais développer mon réponse à partir de là :
Ellipses est un objet qui peut apparaître dans la notation des tranches. Par exemple :
myList[1:2, ..., 0]
Son interprétation est purement laissée à la personne qui met en œuvre le système de gestion de l'information. __getitem__
et voit Ellipsis
mais son utilisation principale (et prévue) se fait dans le cadre de l'initiative de l'Union européenne. numpy bibliothèque tierce, qui ajoute un type de tableau multidimensionnel. Puisqu'il y a plus d'une dimension, le découpage devient plus complexe qu'un simple index de début et de fin ; il est utile de pouvoir également découper en plusieurs dimensions. Par exemple, dans un tableau 4 × 4, la zone supérieure gauche serait définie par la tranche suivante [: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]])
Pour aller plus loin, Ellipsis est utilisé ici pour indiquer un espace réservé pour le reste des dimensions du tableau non spécifiées. Pensez-y comme indiquant la tranche complète [:]
pour toutes les dimensions dans l'espace où il est placé, donc pour un tableau 3d, a[..., 0]
est la même chose que a[:, :, 0]
et pour 4d a[:, :, :, 0]
de la même manière, a[0, ..., 0]
es a[0, :, :, 0]
(avec le nombre de deux-points au milieu qui correspond au nombre total de dimensions du tableau).
Il est intéressant de noter que, dans python3, le littéral Ellipsis ( ...
) est utilisable en dehors de la syntaxe de la tranche, de sorte que vous pouvez réellement écrire :
>>> ...
Ellipsis
EDIT : Ellipsis est également utilisé dans la bibliothèque standard. typing
module : par exemple Callable[..., int]
pour indiquer un appelant qui renvoie un int
sans spécifier la signature, ou tuple[str, ...]
pour indiquer un tuple homogène de chaînes de caractères de longueur variable.
1 votes
Voir les réponses à stackoverflow.com/questions/752602/
46 votes
Je l'ai trouvé comme ça : J'ai entré
x=[];x.append(x);print(x)
pour voir comment il gère la stringification des objets cycliques. Il a retourné[[...]]
. J'ai pensé "Je me demande ce qui se passe si je tape dans[[...]]
? Je pensais qu'une erreur de syntaxe se produirait. Au lieu de cela, il renvoie[[Ellipsis]]
. Python est tellement bizarre. La recherche Google qui s'en est suivie m'a conduit à cette page.46 votes
Notez que le
...
dans une récursive repr est juste un espace réservé et n'a aucune relation avecEllipsis
34 votes
D'ailleurs, le triple point dans import signifie "importer à partir de deux paquets".
1 votes
Superbe exposé de James Powell youtube.com/watch?v=65_-6kEAq58
0 votes
@Matthew D. Scholefield juste une petite remarque, il semble que la syntaxe de découpage en ellipses soit limitée aux tableaux/matrices de numpy, et non aux listes intégrées de python.
0 votes
@MadPhysicist Je ne suis pas sûr que cela mérite d'être une réponse à cette question, mais j'aimerais en savoir plus sur le sujet et j'ai du mal à trouver quelque chose. (Au risque de partir sur une tangente extrême, je viens de rencontrer une erreur ModuleNotFound dans le projet de quelqu'un d'autre où ils utilisent le triple point pour une importation relative. Le problème dans ce cas était que le module importé était un module cython et devait être compilé. Cela m'a pris des lustres pour exclure une erreur avec le chemin parce que je ne comprenais pas le triple point).
0 votes
@craq. C'est un point par niveau supérieur. Je vais trouver les documents officiels si je peux. C'est certainement quelque part là-dedans. Ce serait une question légitime à mon avis, puisque les documents sont difficiles à trouver.
2 votes
@croq stackoverflow.com/q/32395926/2988730 . stackoverflow.com/q/1054271/2988730 . Ces deux-là devraient tout expliquer, avec des liens appropriés vers la documentation et le PEP dans les réponses.
0 votes
Comme le dit la référence du langage python : L'ellipse est un type qui a une seule valeur. Il existe un seul objet avec cette valeur. On accède à cet objet par l'intermédiaire du littéral
...
ou le nom intégré Ellipsis. Sa valeur de vérité est true.