¿Cómo crear una tupla de una tupla vacía en Python?

¿Cómo puedo crear una tupla que consiste solo en una tupla vacía, es decir (()) ? He intentado tuple(tuple()) , tuple(tuple(tuple())) , tuple([]) y tuple(tuple([])) que todos me dieron () .

La razón por la que uso tal cosa es la siguiente: Supongamos que tiene n bolsas con m artículos. Para representar una lista de artículos en una bolsa, uso una tuple de longitud n donde cada elemento de esa tupla es un representante de una bolsa. Una bolsa puede estar vacía, que está etiquetada por () . Ahora, en un punto inicial, ¡solo tengo una bolsa con artículos vacíos!

La tupla vacía es () , y una tupla con solo un elemento (como el entero 1 ), llamada singleton (ver aquí y aquí ) es (1,) . Por lo tanto, la tupla que contiene solo la tupla vacía es

 ((),) 

Aquí hay algunos resultados que muestran que funciona:

 >>> a=((),) >>> type(a)  >>> len(a) 1 >>> a[0] () >>> type(a[0])  >>> len(a[0]) 0 

No me sorprende que esto (()) no haya funcionado, ya que los paréntesis externos se interpretan como eso, paréntesis. Entonces (()) == () , igual que (2) == 2 . Esto debería funcionar, sin embargo:

 ((),) 

tuple () es la única tupla vacía genuina, pero (), y ((),) crean una tupla de longitud 1 que contiene una tupla de longitud 0, pero no una tupla de longitud cero.

Si desea una respuesta a “cómo creo una tupla vacía (o de longitud cero) … Encontré esta publicación con la búsqueda” cómo crear una tupla vacía “, luego me di cuenta de que esta no era la misma pregunta, pero podría ser confundido con esa pregunta (como lo hace la búsqueda), así que pensé que le daría la respuesta a:

¿Cómo se crea simplemente una tupla vacía?

La pregunta original podría inducirle a error, ya que las respuestas originales son lo suficientemente buenas como una tupla vacía, pero no pasan una prueba.

(), creará una tupla ‘vacía’ como se sugirió en las respuestas anteriores con ((),) que también funcionará, al igual que (((((((())))))) de hecho, puede usar cualquier número De los soportes externos que elijas, solo funcionan como soportes. Sin embargo, python, cuando imprime una tupla, agrega un conjunto de soportes externos.

los corchetes vacíos son una representación no estándar de ‘sin valor’ y al agregar la coma al final se forma una tupla de ‘sin valor’. Pero es una tupla con una entrada ‘sin valor’, no una tupla vacía.

Nota: Esta no es una tupla de longitud cero, como también se muestran los otros ejemplos. La tupla externa es una tupla con un valor, solo ese valor tiene ella misma, es la tupla vacía. Así que esto crea una tupla vacía dentro de otra tupla, y la otra tupla no está vacía. Para una verdadera tupla vacía por sí misma, use la tuple() aunque la (), se comporta de forma similar, no es del todo correcta.

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

De manera similar, para una tupla de longitud 1 pero con un valor (de cero en el caso de b, y “” para el ejemplo con c)

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

Por lo tanto, los soportes externos se incluyen para mostrar una tupla, pero en realidad no forman parte de la tupla, ni se necesitan para crear la tupla.

Sin embargo, todos estos métodos de paréntesis no son un vacío real en el nivel externo, que es algo que también tiene casos de uso.

 >>> 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)  >>> if e: print("not empty") >>> # note...did not print...so e acts as false as an empty tuple should 

Entonces, si realmente necesitas una tupla vacía genuina, usa la tuple() , pero si lo suficiente es todo lo que necesitas, puedes usar (), o ((),)