web-dev-qa-db-fra.com

Comment créer un tuple d'un tuple vide en Python?

Comment créer un tuple constitué d’un tuple vide, c’est-à-dire (())? J'ai essayé Tuple(tuple()), Tuple(tuple(Tuple())), Tuple([]) et Tuple(tuple([])) qui m'ont tous donné ().

La raison pour laquelle j'utilise une telle chose est la suivante: Supposons que vous avez n sacs avec m éléments. Pour représenter une liste d'éléments dans un sac, j'utilise un Tuple de longueur n, où chaque élément de ce tuple représente un sac. Un sac peut être vide, étiqueté par (). Maintenant, à un moment donné, je n'ai qu'un sac avec des objets vides!

34
Ali Shakiba

Le Tuple vide est () (Ou le Tuple() plus lent et plus lent), et un Tuple avec un seul élément (tel que l'entier 1), Appelé singleton (voir ici et ici ) est (1,). Par conséquent, le tuple contenant uniquement le tuple vide est

((),)

Voici quelques résultats montrant que cela fonctionne:

>>> a=((),)
>>> type(a)
<type 'Tuple'>
>>> len(a)
1
>>> a[0]
()
>>> type(a[0])
<type 'Tuple'>
>>> len(a[0])
0
54
Rory Daulton

Je ne suis pas surpris ce (()) n'a pas fonctionné, car les parenthèses externes sont interprétées comme telles - parenthèses. Alors (()) == (), juste comme (2) == 2. Cela devrait fonctionner, cependant:

((),)
5
juanpa.arrivillaga

Tuple () est le seul véritable tuple vide, mais (), et ((),) créent un tuple de longueur 1 contenant un tuple de longueur 0 - mais non un tuple de longueur zéro.

Si vous voulez une réponse à "comment puis-je créer un tuple vide (ou de longueur nulle) ... j'ai trouvé cet article avec la recherche" comment pour créer un Tuple vide ", alors réalisé que ce n'était pas la même question, mais pourrait être confondu avec cette question (comme le fait la recherche), alors je pensais que je fournirais la réponse à:

Comment créez-vous simplement un tuple vide?

la question initiale pourrait vous induire en erreur, car les réponses originales sont presque suffisantes sous forme de Tuple vide, mais échouent à un test.

(), Créera un tuple 'vide' comme suggéré dans les réponses précédentes avec ((),), qui fonctionnera également, comme le sera (((((((),)))))) utilisez un nombre quelconque de crochets extérieurs que vous choisissez, ils fonctionnent simplement comme des crochets. Toutefois, lors de l’impression d’un tuple, python ajoute un ensemble de crochets extérieurs.

les crochets vides sont une représentation non standard de "pas de valeur" et l'ajout de la virgule de fin crée un Tuple à partir de "pas de valeur". Mais c'est un tuple avec une entrée 'sans valeur', pas un tuple vide.

Remarque: Ce n'est pas un tuple de longueur zéro, comme le montrent les autres exemples. Le tuple externe est un tuple avec une valeur, mais cette valeur a elle-même le tuple vide. Donc, cela crée un Tuple vide à l'intérieur d'un autre Tuple, et l'autre Tuple est pas vide. Pour un vrai Tuple vide par lui-même, utilisez Tuple() bien que le (), se comporte de manière similaire, ce n'est pas tout à fait correct.

>>>  a = (),
>>> type(a)
<class 'Tuple'>
>>> len(a)
1
>>> a
((),)
>>> len(a[0])  # the inside Tuple is empty, just not the outside one
0

De même, pour un tuple de longueur 1 mais avec une valeur (zéro dans le cas de b et "" dans l'exemple avec c)

>>> b = 0,
>>> type(b)
<class 'Tuple'>
>>> len(b)
1
>>>b
(0,)
# now with an empty string
>>> c = "",
>>> type(c)
<class 'Tuple'>
>>> len(c)
1
>>>c
('',)
>>> len (c[0])  # same len of c[0] as with 'empty' Tuple
0

Ainsi, les crochets extérieurs sont inclus pour afficher un tuple, mais ne font pas réellement partie du tuple, ni nécessaires à la création du tuple.

Cependant, toutes ces méthodes entre crochets ne sont pas vraiment vides au niveau extérieur, ce qui présente également des cas d'utilisation.

>>> a = ((),)  # extra brackets just to show same as other answers
>>> len(a)
1
>>> if a:
   print("not empty")
not empty
>>> e = Tuple()
>>> len(e)
0
>>> type(e)
<class 'Tuple'>
>>> if e:
   print("not empty")

>>> # note...did not print...so e acts as false as an empty Tuple should

Donc, si vous avez vraiment besoin d’un véritable tuple vide, utilisez Tuple(), mais si vous en avez assez, vous pouvez utiliser (), Ou ((),).

3
innov8