À propos de Python3 ... (objet Ellipsis)

Qu'est-ce qu'un objet Ellipsis?

Essayez de taper ... dans le REPL Python 3.

Python3


>>> ...
Ellipsis

Il s'agit de l'objet Ellipsis.

ʻUn objet singleton représenté par Ellipsisou...`.

Dans la Référence officielle, "Principalement la syntaxe de tranche étendue et les données de conteneur définies par l'utilisateur Il dit seulement "une valeur spéciale utilisée dans le type" et ne définit pas clairement son utilisation.

Le mot anglais points de suspension signifie «omis», il peut donc être utilisé lorsque vous souhaitez omettre le traitement ou les arguments.

Différence de Aucun ou réussite

None

"None" signifie "aucune valeur n'existe", tandis que ʻEllipsis` signifie "une certaine valeur existe mais est omise".

Du fait que la valeur de retour de bool (Ellipsis) est True, on peut voir que ʻEllipsis a une signification plus positive que None`.

Python3


>>> bool(None)
False
>>> bool(Ellipsis)
True

pass

pass est une instruction, mais ... est une expression.

Autrement dit, «...» peut être donné à une fonction comme argument.

Python3


>>> str(Ellipsis)
'Ellipsis'
>>> str(pass)
  File "<stdin>", line 1
    str(pass)
           ^
SyntaxError: invalid syntax

Où utiliser

Pseudo code exécutable

En premier lieu, Python est un langage appelé le "pseudo-code exécutable" original.

Cela signifie que le code Python n'est pas simplement un «programme exécutable», mais une «expression de traitement et d'algorithmes que les humains et les ordinateurs peuvent comprendre».

Dans le pseudo-code, la partie abrégée telle que le traitement est parfois écrite comme ..., mais on peut dire que Python3 permet une expression plus abstraite en reconnaissant cela comme une valeur représentant une «omission».

Découpage d'un tableau multidimensionnel avec NumPy

Un exemple plus précis.

NumPy vous permet d'utiliser ... en notation de tranche pour les tableaux multidimensionnels.

Dans ce cas, «...» indique que l'indice de la dimension non spécifiée est arbitraire.

Python3-NumPy


>>> import numpy
>>> a = numpy.array([[1, 2],
...                  [3, 4]]) #Tableau multidimensionnel 2x2
>>> a[0, ...] #Un tableau d'éléments de n'importe quelle colonne de la ligne 0
array([1, 2])
>>> a[1, ...] #Un tableau d'éléments de n'importe quelle colonne de la première ligne
array([3, 4])
>>> a[..., 0] #Un tableau d'éléments dans la colonne 0 de n'importe quelle ligne
array([1, 3])
>>> a[..., 1] #Un tableau d'éléments de la première colonne de n'importe quelle ligne
array([2, 4])
>>> a[...] #Un tableau d'éléments de n'importe quelle colonne dans n'importe quelle ligne
array([[1, 2],
       [3, 4]])

Vous pourriez penser que vous pouvez faire la même chose avec : en notation de tranche.

Python3-NumPy


>>> a[0, :]
array([1, 2])

Cependant, le comportement de «:» et «...» est différent pour les tableaux de trois dimensions ou plus.

: Indique qu'une dimension particulière est arbitraire, mais ... indique que l'index est arbitraire pour toutes les dimensions qui ne sont pas spécifiées.

>>> b = numpy.array([[[1, 2],
...                   [3, 4]],
...                  [[5, 6],
...                   [7, 8]]]) #Tableau multidimensionnel 2x2x2
>>> b[..., 0] #1er,La 2e dimension est arbitraire, l'indice de 3e dimension est 0---(1)
array([[1, 3],
       [5, 7]])
>>> b[:, :, 0] # (1)Synonyme de
array([[1, 3],
       [5, 7]])
>>> b[:, 0] #La 1ère dimension est arbitraire, l'index de la 2ème dimension est 0, l'index de la 3ème dimension est arbitraire---(2)
array([[1, 2],
       [5, 6]])
>>> b[:, 0, :] # (2)Synonyme de
array([[1, 2],
       [5, 6]])

référence

Recommended Posts

À propos de Python3 ... (objet Ellipsis)
À propos de la notation d'inclusion de python
Objet intégré Python
À propos de Python tqdm.
À propos du rendement Python
Objet intégré Python
À propos de l'héritage Python
À propos de python, range ()
À propos de Python Decorator
À propos de la référence Python
À propos des décorateurs Python
[Python] À propos du multi-processus
Mémorandum de base Python Partie 3-A propos de l'orientation des objets-
À propos de Python for loop
À propos des arguments de fonction (python)
[Python] Mémo sur les fonctions
Résumé sur Python3 + OpenCV3
À propos de Python, pour ~ (plage)
[Python] Mémo sur les erreurs
À propos de l'environnement de développement Python
Python: à propos des arguments de fonction
Orienté objet en python
Python, à propos de la gestion des exceptions
À propos de Python Pyramid Traversal
[Python] Chapitre 01-01 À propos de Python (First Python)
[Python] À propos de l'entrée standard
À propos de __all__ en python
[Python] En savoir plus sur pip
Prise en charge de Fabric pour Python 3
À propos des objets et des classes Python
À propos des variables et des objets Python
[python] Valeur de l'objet fonction (?)
À propos du module Python venv
Comparaison d'objets nuls en Python
fonction de mémorandum python pour débutant
À propos de divers encodages de Python 3
À propos de Python, len () et randint ()
À propos de Perl, Python, PHP, Ruby
À propos de la date et du fuseau horaire Python
Mémorandum sur la corrélation [Python]
Un mémorandum sur le simulacre de Python
À propos des fonctionnalités de Python
À propos de "for _ in range ():" de python
À propos des opérations Python et OS
Python # À propos de la référence et de la copie
À propos de Python sort () et reverse ()
Une note sur [python] __debug__
Orientation des objets Prolog pour les programmeurs Python
Remarque Python: à propos de la comparaison en utilisant is
[Ubuntu] [Python] Suivi d'objets à l'aide de dlib
À propos de l'installation des séries Pwntools et Python2
Toucher les objets Python d'Elixir
Python
Python: une note sur les classes 1 "Résumé"
[Python] Écrivons brièvement la notation d'inclusion
À propos de Python dict et des fonctions triées
À propos de Python et Cython dtype